本文简单说明SpringBoot中的依赖管理、starter的作用与导入、包结构与扫描路径。其中讲述了复合注解@SpringBootApplication
的展开
1.依赖管理与starter导入
父项目依赖管理
Spring Boot 使用 pom.xml 中的父项目做依赖(dependencies)管理 (即:版本控制)
1 | <parent> |
跟进 pom.xml 中的spring-boot-starter-parent
,会看到这个父项目还有一个父项目spring-boot-dependencies
。跟进这个项目,可以看到各个常用依赖的具体版本,和依赖本身。
这个机制叫做——自动版本仲裁
starter场景启动器
Starters 是一组方便的依赖描述符,只要导入starters就可以自动导入这个场景下所需的依赖项。
命名方式上,官方srarter(场景启动器)使用spring-boot-starter-*
格式命名,第三方starter使用*-spring-boot-starter
格式命名。这里的*
就代表一种场景。
我们可以在官方文档查询所有的官方starter 。
所有场景启动器最底层的依赖是spring-boot-starter-parent
导入starter
如果你要导入一个场景的依赖,那么就可以在文档中找到这个场景的starter。然后写入到 pom.xml 的<dependencies>
标签。
你也可以找到对应场景启动器在spring-boot-dependencies
中的<dependency>
标签。复制<dependency>
标签内容并粘贴在 pom.xml 。
示例:
1 | <dependencies> |
依赖库的版本
导入starter时,这些依赖的版本有两种控制方法——自动版本仲裁和手动指定
- 自动版本仲裁:如果导入starter时没有设定
<version>
标签则会依据通过父项目依赖来指定版本 - 手动指定版本:
查看spring-boot-dependencies
里设定版本用的标签;
在 pom.xml 中手动添加一个<properties>
标签,在内部重写配置;
可以使用的版本号在MVNrepository中查找;
手动版本指定示例:
1 | <properties> |
另外:还可以在导入starter时,添加<version>
标签来实现。
2.自动配置与包结构
这里简单记录SpringBoot为我们配置的项目以及包结构与扫描路径
自动配置
- 自动配好Tomcat
- 引入Tomcat依赖
- 配置Tomcat
- 自动配好SpringMVC
- 引入SpringMVC全套组件
- 自动配好SpringMVC常用组件(功能)
- 自动配好Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景
- 各种配置拥有默认值
- 默认配置最终都是映射到某个类上,如:MultipartProperties
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
- 按需加载所有自动配置项
- 非常多的starter
- 引入了哪些场景这个场景的自动配置才会开启
- SpringBoot所有的自动配置功能都在
spring-boot-autoconfigure
包里面
- 自定配置包扫描
3.包结构与扫描路径
得益于Spring Boot的自动配置,我们也无需进行包扫描配置
- 默认扫描:主程序所在包及其所有子包里的组件
- 改变扫描路径:
- 法一:
@SpringBootApplication(scanBasePackages="扫描起始包名")
- 法二:
@ComponentScan
指定扫描路径(看代码块说明)
- 法一:
- 正常情况需要把业务
@RestController
放在主程序包的子包里
@ComponentScan
说明:
1 | @SpringBootApplication |