Spring Boot 自定义 starter
在项目开发的过程中,难免需要自己引入一些其他项目的starter, 或是自己定义的starter, 本文是创建自定义的starter的一些步骤.
本文以JDBC配置为例;
一. 首先创建一个maven过程:
二. 引入依赖
maven依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <?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
1 2 3 4 5 6 7 8 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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, 配置如下:
1 2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.feng.config.JdbcConfig |
四. 打包操作
执行命令: mvn clean install
打包成功后,在本地maven仓库里面,找到对应的jar
五. 上面的jar,可以根据本地仓库中的路径,直接在pom.xml中引用
1 2 3 4 5 | <dependency> <groupId>com.feng</groupId> <artifactId>jdbc-spring-boot-starter</artifactId> <version> 1.0 -SNAPSHOT</version> </dependency> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)