1.pom.xml中父工程的配置
<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>
(此处代码引用自上节SpringBoot学习笔记一中的pom.xml)
点击artifactId标签中的spring-boot-starter-parent跳转至spring-boot-starter-parent-2.2.2.RELEASE的pom文件,可以发现该pom文件中也有一个父工程:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
同样的方法追寻到spring-boot-dependencies-2.2.2.RELEASE的pom文件,可以看到该pom文件中配置了众多常用jar的版本号。由此可见,父工程的本质作用为:对开发过程中常见依赖的版本进行锁定,因此我们在项目开发过程中添加依赖的时候,就可以不需要指定版本号。
需要注意的是:
- 对于父工程中没有指定的依赖,还需要手动添加版本号。
- 父工程中已经指定了版本号,手动配置时又重复指定的情况下,以手动配置的版本号为准。
2.SpringBoot启动器
- SpringBoot对我们日常开发的大部分常用场景都进行了封装,封装成若干个启动器。每个启动器都包含对应场景下所需要的所有相关依赖。因此,在开发过程中需要什么场景就可以直接添加什么场景的启动器,由此简化maven配置。
以SpringWeb启动器为例:
<!-- web启动器依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在项目的maven窗口中打开展开依赖结构,如下图所示:
可以看到SpringBoot的web启动器下自动将所有相关的依赖都导入进来了。
- SpringBoot启动器的命名格式统一为spring-boot-starter-xxx。
- 其他场景对应启动器可以在SpringBoot启动器的官网介绍上查询。
3.主程序类分析
SpringBoot启动类代码:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // SpringBoot启动入口配置
public class SpringbootjpademoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootjpademoApplication.class, args);
}
}
@SpringBootApplication注解类中包含的两个核心注解:
- @SpringBootConfiguration( SpringBoot的配置类)
该注解等价于Spring中的@Configuration。作用与使用applicationContext.xml配置文件来注册Bean等同。SpringBoot推荐使用配置文件,推荐使用配置类。 - @EnableAutoConfiguration (开启自动配置)
该类包含的核心注解为:
- @Import({AutoConfigurationImportSelector.class}) 作用是向容器中注册组件。SpringBoot在启动时会注册很多自动配置包(2.2.4版本中是124个),因此很多配置都不需要手动配置,只需要对部分配置按需更改。
- @AutoConfigurationPackage作用是自动配置导包。即获取@SpringBootApplication注解所修饰的主程序类所在的包,将该包下的所有组件注册到容器中。此时将从124个已注册的配置中选出需要注册到容器中的组件对应所需的jar包导入到项目中。具体项目中的【组件】是指被特定注解修饰后,具有特定作用和意义的类或者方法。