一、介绍
使用 Spring Boot 可以轻松创建一个基于 Spring 的、可运行的、生产级的独立应用程序。大部分 Spring Boot 程序只需要一点点的 Spring 配置。
二、创建 Maven 项目
2.1 使用 IDEA 创建一个普通的 maven 项目
2.2 配置 POM 文件
这里需要说明一下创建好之后需要选择右下角提示的自动导入jar包选项
2.3 创建启动类
在 java 目录下创建 com.xxx(包名随意) 包和 Application 类作为程序的启动类
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2.4 请求处理
在之前的 com.xxx 包下面创建 controller 包和 SampleController 类(名字随意,建议见名知意)
@Controller
public class SampleController {
@RequestMapping(path="/hello", method=RequestMethod.GET)
@RequestBody
public String hello() {
return "Hello World!";
}
}
2.5 启动程序
运行 Application 类的 main 方法即可启动程序
2.6 浏览器访问应用程序
在浏览器地址输入: http://localhost:8080/hello 向服务器发送请求
2.7 打包部署
关闭已启动的应用程序,打开 maven 面板进行打包
复制打包结果 jar 文件到桌面
2.8 运行程序
在命令行使用 java -jar 命令运行程序(-与jar之间不能有空格),之后 jar 文件路径写上,或者直接拖动 jar 包到命令行中即可
之后在浏览器中输入 2.6 中的地址 http://localhost:8080/hello 向服务器发送请求。
关闭命令行即可关闭应用程序。
三、Spring Boot 特点
1> 可以快速开发 Spring 程序;
2> 通过 starter 依赖简化构建配置;
3> 为 Spring 和第三方库提供默认配置,如果需要修改配置也很简单;
4> 内嵌服务器,打包为 jar 文件,部署方便;
5> 提供大型项目的非功能性功能,如:security、metrics 和 health checks 等;
四、核心概念
4.1 @SpringBootApplication
@SpringBootApplication
注解是一个组合注解,由 @SpringBootConfiguration
、@EnableAutoConfiguration
和 @ComponentScan
三个注解组成。
@SpringBootConfiguration
继承自 @Configuration
注解,标注当前类是一个配置类;
@EnableAutoConfiguration
用于启用自动配置,对 Spring 和第三方依赖进行默认配置;
@ComponentScan
用于识别 @SpringBootApplication
所在类的同级目录以及子目录中的 Spring 注解;
4.2 @EnableAutoConfiguration
@EnableAutoConfiguration
注解是一个组合注解,由 @AutoConfigurationPackage
和 @Import({AutoConfigurationImportSelector.class})
两个注解组成。
主要借助 AutoConfigurationImportSelector
类加载指定的自动配置类到程序内使用。
需要加载的自动配置类名字保存在 spring-boot-autoconfigure.jar/META-INF/spring.factories
文件中,类保存在 spring-boot-autoconfigure.jar
文件中。
4.3 starter
Spring Boot 将 web 开发中的常用功能抽取出来,做成一个个的 starter(启动器)。
我们在项目中引入某个 starter 后,就能把该功能相关的所有依赖和默认配置导入到项目中,从而简化了依赖和配置文件的编写。
starter 可以分为两种:
spring-boot-starter-parent:
通过继承这个依赖,默认具备如下功能:
java 版本指定为 jdk1.8;编码格式指定为 UTF-8;
一组互相兼容的第三方依赖版本号,引入其它依赖的时候就无需指定版本号;
常用的 Spring Boot 插件;
spring-boot-starter-*:
封装了某个功能所有的依赖和配置文件,导入这个 starter 即导入了该功能用到的所有依赖和默认配置。