Spring Boot 自定义 starter
在项目开发的过程中,难免需要自己引入一些其他项目的starter, 或是自己定义的starter, 本文是创建自定义的starter的一些步骤.
本文以JDBC配置为例;
一. 首先创建一个maven过程:

二. 引入依赖
maven依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.feng</groupId>
<artifactId>jdbc-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
<name>jdbc-spring-boot-starter</name>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.6.RELEASE</version>
<scope>compile</scope>
</dependency>
<!--spring 配置时 处理的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.1.6.RELEASE</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
<!--alibaba 数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
三. 在项目中新建配置类
配置文件 application.yml
server: port: 8080 jdbc: driver-class-name: com.mnysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/bank?characterEncoding=utf-8&serverTimezone=UTC username: root password: 123
JdbcProperties.java
package com.feng.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* Jdbc配置类
*/
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public JdbcProperties() {
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
JdbcConfig.java
package com.feng.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
@ConditionalOnClass(DataSource.class) //包含DataSource这样的类才生效
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(JdbcProperties prop){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(prop.getDriverClassName());
dataSource.setUrl(prop.getUrl());
dataSource.setUsername(prop.getUsername());
dataSource.setPassword(prop.getPassword());
return dataSource;
}
}
还需要在resources 文件目录下新建META-INF目录,新建文件 spring.factories, 配置如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.feng.config.JdbcConfig
四. 打包操作
执行命令: mvn clean install
打包成功后,在本地maven仓库里面,找到对应的jar

五. 上面的jar,可以根据本地仓库中的路径,直接在pom.xml中引用
<dependency>
<groupId>com.feng</groupId>
<artifactId>jdbc-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

浙公网安备 33010602011771号