- 创建启动器项目
- 添加启动器相关依赖
- 创建属性配置类
- 创建自动配置
- 编写自动配置文件spring.factories
- 使用自定义的启动器
这里我拿定义一个连接池启动器举例
实现: 当用户引入了连接池启动依赖,并配置相应配置文件,项目自动配置连接池
1,创建启动器项目
创建项目 spring-boot-jdbc-starter 引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.6.RELEASE</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--引入spring‐boot‐starter;所有starter的基本配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--自动配置连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
2,创建属性配置类
import org.springframework.boot.context.properties.ConfigurationProperties;
@Component
@ConfigurationProperties(prefix = "spring.jdbc.datasource")
public class DataSourceProperties {
private String driverClassName ;
private String url;
private String username;
private String password;
// 生成set get 方法
}
3,创建自动配置
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@SpringBootConfiguration
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
@Autowired
private DataSourceProperties dataSourceProperties ;
@Bean
public DataSource createDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
dataSource.setUrl(dataSourceProperties.getUrl());
dataSource.setUsername(dataSourceProperties.getUsername());
dataSource.setPassword(dataSourceProperties.getPassword());
return dataSource;
}
}
4,编写自动配置文件spring.factories
在 resources 文件夹下面新建 META-INF/spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.wiselzx.autoconfig.DataSourceAutoConfiguration
做完了之后注意要执行install , 安装项目到本地maven仓库
5,使用自定义的启动器
在新项目中引入依赖
<dependency>
<groupId>com.kutake</groupId>
<artifactId>spring-boot-jdbc-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
配置连接池信息 新建 application-datasource.yml
spring:
jdbc:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql:///database
username: root
password: 123456
激活配置文件 application.yml
spring:
profiles:
active: datasource
关于为何在 resources 文件夹下面新建 META-INF/spring.factories 我会在"Spring Boot自动配置原理" juejin.cn/post/723555…中说明