Spring Boot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了 Spring 众多框架中所需的大量且繁琐的配置文件,所以 Spring Boot 是一个服务于框架的框架,服务范围是简化配置文件。从本质上来说,Spring Boot 其实就是 Spring 框架的另一种表现形式。 Spring Boot 是目前流行的微服务 框架,使用 Spring Boot 可以快速创建基于 Spring 生产级的独立应用程序。Spring Boot 提供 了很多核心功能,如自动化配置、starter 简化 Maven 配置、内嵌 Servlet 容器、应用监控等 功能,它还集成了大量常用的第三方库配置,Spring Boot 应用中这些第三方库几乎可以是 零配置的开箱即用,使开发者能够更加专注于业务逻辑。总统来说,Spring Boot 主要有如下优势: 快速创建独立运行的 Spring 项目以及与主流框架集成。 使用嵌入式的 Servlet 容器,应用无需打成 WAR 包。 starters 自动依赖与版本控制。 大量的自动配置,简化开发,也可修改默认值。 无需配置 XML,无代码生成,开箱即用。 准生产环境的运行时应用监控。 与云计算的天然集成。
微服务是未来发展的趋势,项目会从传统架构慢慢转向微服务架构,因为微服务可以使 不同的团队专注于更小范围的工作职责、使用独立的技术、更安全更频繁地部署。而 Spring Boot 继承了 Spring 的优良特性,与 Spring 一脉相承,而且支持各种 REST API 的实现方式。 Spring Boot 也是官方大力推荐的技术,可以看出,Spring Boot 是未来发展的一个大趋势。
安装与配置 Maven Maven 是目前最流行的项目管理工具。Maven 官方下载网址为: http://maven.apache.org/download.cgi,大家可以根据自己的需求下载合适版本的 Maven,本书版本 apache-maven-3.3.9。 虽然在 IDEA 中已经包含 Maven 插件,但是还是希望大家在工作中能安装自己的 Maven 插件,方便项目配置。 下载完成后解压即可,然后将安装路径(比如:D:\java\apache-maven-3.3.9\bin)配置在 环境变量 path 中。 配置完成后,在命令窗口中执行:mvn -v,验证Maven 是否安装成功。
安装成功后,在 IDEA 中配置 Maven,具体步骤如下: 在安装目录(如:D:\java\apache-maven-3.3.9)下新建空文件夹 repository,作为本地仓库。 修改 apache-maven-3.3.9–>conf–>settings 配置文件
在 IDEA 界面中选择 File->Settings,在窗口中搜索 Maven 选项,配置为自己的 Maven
10.4.2 启动类 Spring Boot 的启动类的类名是根据项目名称生成的,它的作用是启动 Spring Boot 项 目,是基于 Main 方法来运行的。 启动类中@SpringBootApplication 注解:是一个组合注解,包含 @SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan 三个注解,是项目 启动注解。 @SpringBootConfiguration :是@Configuration 注解的派生注解,跟@Configuration 注解的功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration 是 springboot 的注解,而@Configuration 是 spring 的注解。 @Configuration :通过对 bean 对象的操作替代 spring 中 xml 文件 。 @EnableAutoConfiguration:Spring Boot 自动配置(auto-configuration),尝试根 据你添加的 jar 依赖自动配置你的 Spring 应用。是@AutoConfigurationPackage 和 @Import(AutoConfigurationImportSelector.class) 注解的组合。 @AutoConfigurationPackage :自动注入主类下所在包下所有的加了注解的类 (@Controller,@Service 等),以及配置类(@Configuration)
@Import:直接导入普通的类。 @ComponentScan:组件扫描,可自动发现和装配一些 Bean。 @ConfigurationPropertiesScan:@ConfigurationPropertiesScan 扫描配置属性。 @EnableConfigurationProperties 注解的作用是使用 @ConfigurationProperties 注解的类生效。 注意:启动类在启动时会做注解扫描(@Controller、@Service、@Repository......), 扫描 位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。
继承 Spring Boot 的父级依赖,只有继承如下依赖项目才是真正的 Spring Boot 项目,依赖如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。 使用它之后,常用的包依赖可以省去 version 标签。
2. 依赖 使用 Spring Initializer 快速创建的 Spring Boot 项目默认添加了如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> spring-boot-starter-web:spring-boot-starter-web 启动器支持全栈式 Web 开发,包括 Tomcat 和 spring-webmvc 等,引入该启动器,便能获得 Web 服务相关场景的 jar 包。 spring-boot-starter-test:引入这个启动器,就会把所有与测试相关场景的 jar 包引入。
Spring Boot 提供了非常多的 starters 启动器。starters 启动器包含了一系列可以集成到应 用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖 包。例如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖 就能使用了。 3. 插件 spring-boot-maven-plugin 插件是将 Spring Boot 应用程序打包成 jar 包的插件,如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 将所有应用启动运行所需要的 jar 包都包含进来,从逻辑上讲具备了独立运行的条件。 可以使用"mvn package"进行打包,然后使用"java -jar 项目"命令就可以直接运行。
配置文件的作用是修改 Spring Boot 自动配置的默认值。Spring Boot 提供一个名称为 application 的全局配置文件,支持两种格式 properteis 格式与 YAML 格式。 除了 properties 文件外,SpringBoot 还可以使用 yml 文件进行配置。 YAML 格式配置文件的扩展名可以是 yaml 或 yml。 1. YAML 基本语法 K:(空格)V 标识一对键值对 。 以空格的缩进来控制层级关系 。 只要是左对齐的一列数据,都是同一层级的 。 属性和值也是大小写敏感。 配置 Tomcat 监听端口,如下: server: port: 8089
2. 配置文件存放位置 当前项目根目录中 当前项目根目录下的一个/config 子目录中 项目的 resources 即 classpath 根路径中 项目的 resources 即 classpath 根路径下的/config 目录中 3. 配置文件加载顺序 不同格式的加载顺序 如果同一个目录下,有 application.yml 也有 application.properties,默认先读取application.properties。 如果同一个配置属性,在多个配置文件都配置了,默认使用第 1 个读取到的,后面读 取的不覆盖前面读取到的。
不同位置的加载顺序 当前项目根目录下的一个/config 子目录中(最高) config/application.properties config/application.yml 当前项目根目录中(其次) application.properties application.yml 项目的 resources 即 classpath 根路径下的/config 目录中(一般) resources/config/application.properties resources/config/application.yml 项目的 resources 即 classpath 根路径中(最后) resources/application.properties resources/application.yml
@RestController @RestController 注解包含了原来的@Controller 和@ResponseBody 注解,@Controller 注解已经非常了解了,这里不再赘述,@ResponseBody 注解是将返回的数据结构转换为Json 格式。 @GetMapping @PostMapping @PutMapping @PutMapping 注解是@RequestMapping(method = RequestMethod.PUT)的缩写。更新资 源应该使用 PUT。 @DeleteMapping @DeleteMapping 注解是@RequestMapping(method = RequestMethod.DELETE)的缩写。 删除资源应该使用 DELETE。