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>