第三章节介绍如何使用spring boot,它总共包含10个小节,分别是
- 构建工具:我使用的是maven,其他构建工具省略
- 项目代码的目录结构
- 配置信息,单个或多个配置类,配置类与XML的混合方式。
- 自动注入
- 获取自动注入的类。
- @SpringBootApplication注解
- 运行spring boot项目
- 开发工具
- 打包项目。
- 下个章节的引言。
第四章节的前三小节也是SpringBoot的功能,所以我将其归并到第三章节的阅读笔记中。
1、maven
使用maven构建spring boot项目时,maven工具发挥的功能没有任何变化,变化的是以前单独引入依赖,现在是引入spring Boot整合的依赖。例如开发Web项目,以前需要单独引入Spring MVC,Servlet-api等等。现在只需要引入spring-boot-starter-web,它整合了Web开发需要的依赖。
spring boot整合了许多相关的依赖,并构建为单独的模块。优点是很方便,缺点是不了解模块的情况下,添加了很多不必要的依赖,无法指定所依赖的版本号。若想自己选择版本号,可以在添加spring-boot依赖之前单独引入依赖。例如想选择logback的版本号,可以在actuator之前引入logback, 代码如下
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <!-- actuator整合了logback-classic --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
Spring boot依赖的名称格式为spring-boot-starter-*,其中*号代表具体依赖的模块。
构建stand-alone项目需要引入spring-boot-starter-parent,构建web项目需要引入spring-boot-starter-web。
Spring-boot-starter-parent有很多默认值
- 默认的JDK版本为1.8
- 默认的字符集为UTF-8
- 添加其他spring-boot-start-*时,不在需要指定版本号,指定parent版本号即可。
- 添加了repackage的goal。Goal是项目生命周期中的一个阶段
- 默认的resource filtering,运行resources:resource即会将资源文件中的变量替换为具体值。
- 添加了默认的一些插件,例如exec,shade
- 配置文件有默认的resource filtering。
2、代码结构
Spring-boot还是沿用maven的代码目录结构,这里的代码结构是指启动类约定俗成的规则。
启动类通常直接放在root package下。
启动类通常有main方法
启动类通常有@SpringBootApplication注解
3、配置信息
单个启动类,类上添加@SpringBootApplication注解
多个配置类时,其他配置类上有@Configuration注解。启动类通过@Import注解引入配置类,或者是将配置类存放在扫描路径下。
当为混合模式时,使用@ImportResource引入XML格式的配置文件。
4、自动注入依赖(Auto-DI)
如果遵循启动类的代码结构,无需在启动类上添加@ComponentScan注解,它会默认将root package下所有子包的@Service,@Component,@Controller等注入到IOC容器中。
获取方式和spring一样,使用@Autowired,@Resource注解,当依赖为构造器依赖时,@Autowired或@Resource注解可以省略。
5、项目运行方式
有三种方式
- IDE方式下,直接运行main方法即可。
- 当为jar包时,通过java -jar app.jar运行项目。
- 使用maven插件,运行mvn spring-boot:run