1.背景知识
1.1启动器与自动配置类
- 启动器只用来做依赖导入
- 专门写一个自动配置类
- 启动器依赖自动配置类,项目引入相应的starter就会引入启动器的所有的传递依赖
1.2 启动器
启动器是一个空Jar文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库
命名规约
- 官方命名
spring-boot-starter-模块名(eg:spring-boot-starter-web,spring-boot-statrer-jdbc)
- 自定义命名
模块名-spring-boot-starter(eg:mybatis-spring-boot-starter)
1.3 如何编写自动配置
@Cinfiguration //指定这个类是一个自动配置类
@ConditionnalOnXXX //在指定条件成立的情况下自动配置类生效
@AutoConfigurAfer //指定自动配置类的顺序
@Bean //给容器中添加组件
@ConfigurationProperties//结合xxxProperties类来绑定相关的配置
@EnableConfigurationProperties //让xxxProperties生效加入到容器中
public class XxxAutoConfiguration(){
自动配置要能加载,需要将启动就加载的自动类配置在META-INF/spring.factories中。
例如:
org.springframework.context.ApplicationContextInitializer=\
com.example.bootjpa.listener.HelloApplicationContextInitializer
org.springframework.boot.SpringApplicationRunListener=\
com.example.bootjpa.listener.HelloSpringApplicationRunListener
2.案例
1.创建一个空工程
2.创建一个自动配置模块,和创建其他的普通的SpringBoot项目一样,不需要引入其他starter
3.删除多余的文件和依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.starter</groupId>
<artifactId>spring-boot-starter-autoconfigure</artifactId>