NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# Spring Boot简介及入门 ## 什么是Spring Boot ### (一)当前Java开发遇到的问题 * 繁多的配置 * 低下开发的效率 * 复杂的部署流程 * 第三方技术集成难度大 ### (二)Spring Boot的诞生 #### Spring Boot的目的 Spring Boot是在Spring框架基础上创建的全新框架。相比于以往的一些开发框架,Spring Boot使用更加简单,而且功能更加丰富,性能更加稳定而健壮。Spring Boot的设计目的就是简化开发,让开发者能把更多的精力投入到实际业务中。 #### Spring Boot核心理念 Convention Over Configuration (约定优于配置) #### Spring Boot特点 - 开箱即用,根据项目依赖自动配置。 - 功能强大的服务体系,如:嵌入式服务、安全、性能指标、健康检查 - 绝无代码生成,可以不需要任何xml配置(使用Java配置和注解来代替) - 对第三方技术几乎完美整合 ### (三)Spring Boot快速上手 #### Spring Boot非命令行构件的三种方式 1. IntelliJ IDEA自带构件Spring Boot 2. Eclipse 安装STS插件 1. 可以在官方下载安装,官方地址[:https://spring.io/tools/sts/all](http://note.youdao.com/) 2. 可以在Eclipse的MarketPlace中安装:![image](http://on3eg24oc.bkt.clouddn.com/Eclipse%E5%AE%89%E8%A3%85STS.jpg) 3. 使用官方自带的生成工具: 1. 进入官网,在DOCS栏目中点击如下: ![image](http://on3eg24oc.bkt.clouddn.com/%E5%AE%98%E7%BD%91%E7%94%9F%E6%88%90SpringBoot01.jpg) 2. 选择项目构件工具和Spring Boot的版本 ![image](http://on3eg24oc.bkt.clouddn.com/%E5%AE%98%E7%BD%91%E7%94%9F%E6%88%90SpringBoot02.jpg) 3. 展开扩展选项,进行更详细配置,这里我们用到SpringMVC,只需要勾选一个`WEB`即可 ![image](http://on3eg24oc.bkt.clouddn.com/%E5%AE%98%E7%BD%91%E7%94%9F%E6%88%90SpringBoot03.jpg) 4. 点击按钮 ![image](http://on3eg24oc.bkt.clouddn.com/%E5%AE%98%E7%BD%91%E7%94%9F%E6%88%90SpringBoot04.jpg) 生成项目。 5. 解压项目后,是一个标准的Maven工程,导入到IDE中即可。 #### Spring Boot项目结构简介 **项目结构如图**: ![image](http://on3eg24oc.bkt.clouddn.com/SpringBoot%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84%E7%AE%80%E4%BB%8B.jpg) - `SpringbootdemoApplication.java`:Spring Boot的启动入口,以及一些全局的配置。注解`@SpringBootApplication`表明了这是Spring Boot的应用入口,Spring官方建议该入口有且只有一个。 - static目录:Spring Boot**约定**的静态文件目录,只要放在这个目录中,Spring Boot就会当成静态文件处理。 - templates:Spring Boot**约定**的模板目录,如FreeMarker、Thymeleaf(默认)、Jsp(不建议)等 - `application.properties`:Spring Boot的配置文件,可以是`.properties`或者`.yml`(spring推荐) - pom.xml文件:Maven的构建配置文件。其中`spring-boot-starter-parent`是Spring Boot构建的基础,负责依赖管理与默认配置,`spring-boot-starter-web`是SpringMVC的依赖,`spring-boot-starter-test`是测试依赖,`spring-boot-maven-plugin`是Spring Boot的打包插件。通过简单的依赖配置,Spring Boot将自动帮我们导入其他所需要的依赖包。 #### 一次请求响应 1. 在com.luyou下创建一个`domain`包,一个`controller`包,domain包里创建一个`User`类,controller包里创建一个`TestController`类,如下: User: ```java public class User implements Serializable{ private long id; private String name; @JsonFormat(pattern="yyyy年MM月dd日") private Date birthDay; @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date registerDate; get/set ... } ``` TestController: ``` @RestController @RequestMapping(value = "/test") public class TestController { @GetMapping("/getmap") public Map<Long,Object> getMap(){ Map<Long,Object> map = new HashMap<>(); User user = new User(); Date date = new Date(); user.setBirthDay(date); user.setRegisterDate(date); user.setId((long)(Math.random()*50000)); user.setName("张三丰"); map.put(user.getId(),user); return map; } } ``` 2. 到SpringbootdemoApplication中运行main方法,会在控制台看到Spring Boot的启动画面,在启动日志中,会发现 - Tomcat started on port(s): 8080 (http) - Started SpringbootdemoApplication in 5.938 seconds (JVM running for 6.524) 这样的输出,表示应用已经启动好了。 3. 通过浏览器或者postman访问:127.0.0.1:8080/test/getmap,会发现json已经返回。 ![image](http://on3eg24oc.bkt.clouddn.com/%E4%B8%80%E6%AC%A1%E8%AF%B7%E6%B1%82%E5%93%8D%E5%BA%94.jpg) #### 打包 1. 通过Eclipse的maven插件打包:在项目上右键-->Run as--> Maven Build,如果是第一次,会出现如下对话框: [image](http://on3eg24oc.bkt.clouddn.com/Maven%E6%89%93%E5%8C%8501.jpg) 2. 打包成功后,在项目的`target`目录下会生成对应的jar包(若没有,请刷新一下项目),我们需要的是包含完整依赖的`springbootdemo-0.0.1-SNAPSHOT.jar`,而另外一个后缀为`.original`的包中只有我们自己的代码,没有相关的依赖包。 ![image](http://on3eg24oc.bkt.clouddn.com/Maven%E6%89%93%E5%8C%8502.jpg) #### 部署 先将`springbootdemo-0.0.1-SNAPSHOT.jar`改名成`springbootdemo.jar`方便敲键盘。 现在我们换一种操作系统,比如linux,将`springbootdemo-0.0.1-SNAPSHOT.jar`上传到系统中,比如/luyou/springboot/,然后执行: > java -jar /luyou/springboot/springbootdemo.jar 这样,项目就已经部署好了。 #### 怎样做到 Spring Boot的入门就这样完成了,一个最基本的mvc框架。 * Spring Boot 默认会扫描注解`@SpringBootApplication`所在*包*以及*子包*,如果发现包下面的类有如`@Controller`、`@Service`、`@Component`、`@Repository`...这样的注解,会注册成由spring管理的一个Bean。 * Spring Boot内嵌了Tomcat容器,默认端口8080(这个端口号,就是在没有额外配置时的**约定**) * Spring Boot默认使用了Jackson作为json的处理器。