目录
2.4、Resources下创建META-INF/spring.factories
1、SpringBoot核心
1.1、依赖管理
将jar包依赖版本交由SpringBoot父项目控制,在子项目中只需要引入相关依赖即可。
Maven主导,父项目做依赖管理(自动版本仲裁)。即spring-boot-starter-parent提供相关的 Maven 默认依赖,使用它之后,常用包的依赖就可以省去 version 标签。
在创建SpringBoot项目时,在pom.xml中指定父项目依赖管理spring-boot-starter-parent,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
spring-boot-starter-parent的父依赖spring-boot-dependencies,定义了SpringBoot相关版本,通过在父依赖的dependencyManagement标签中统一管理各jar包及其版本号,这样我们在子项目中引入相关jar包的时候,就不用再手动配置版本号了。
1.2、自动配置
应用程序启动时,spring boot框架自动检测 classpath里的Bean来进行配置。
@SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
- @SpringBootConfiguration
和Configuration注解一样,标注当前类是配置类,并会将当前类内生命的Bean交给IOC容器进行管理。
- @EnableAutoConfiguration
@AutoConfigurationPackage
使用@Import,将SpringBoot启动类所在包及其子包里面所有组件加载到Spring容器中。
@Import(AutoConfigurationImportSelector.class)
使用内部工具类SpringFactoriesLoader,查找classpath上所有jar包中的META-INF/spring.factories进行加载,实现将配置类信息交给SpringFactory加载器进行一系列的容器创建过程。(spring.factories文件中配置了需要进行加载的Java配置类)。
- @ComponentScan
指定扫描的包路径,如果没有指定,则将SpringBootApplication的包路径作为扫描的基本包路径。
1.3、约定优于配置,体现在哪些方面
- 默认的配置文件:application.properties 或 application.yml 文件。
- 默认通过 spring.profiles.active 属性来决定运行环境时的配置文件。
- Maven的目录结构。默认有resources文件夹,存放资源配置文件。
2、如何自定义starter
命名规范:官方推出的starter 以spring-boot-starter-xxx的格式来命名,第三方开发者自定义的starter则以xxxx-spring-boot-starter的规则来命名。
2.1、新建maven工程,并导入自动配置依赖包
2.2、创建JavaBean(业务逻辑)
2.3、编写配置类
@Conditional接口:按照一定条件进行判断,满足条件给容器注册Bean。
常用实现:@ConditionalOnClass、@ConditionOnBean。
也可配置@Import注解,引入其他的配置类。
2.4、Resources下创建META-INF/spring.factories
3、SpringBoot开启热启动
以上内容为个人学习总结,仅供学习参考,如有问题,欢迎在评论区指出,谢谢!