在项目开发中,尽管 springboot 提供了很多 starter,可以实现很多功能,不过也是不可能应付所有需求的。但是,根据我们自己的业务,我们可以自定义 starter 来实现项目中复用度高的业务,让别的模块能很方便的引入使用。
仿照 mybatis 的 starter,命名采用 xxx-spring-boot-starter,根据 jar 包的目录结构可以看到,starter 里面其实没有内容,里面主要是一个依赖传递,起了依赖保护的作用;autoconfigure 里面才是干货,是真正实现功能的地方。
因此,我们自定义 starter 时,首先创建一个 xxx-autoconfigure 的 maven 工程,在这个工程实现功能,再是创建一个 xxx-starter 的 maven 工程,引入 xxx-autoconfigure 依赖,其他就不需要了。在使用 starter 时,只要引入 xxx-starter 依赖即可使用自定义的 starter 功能了。
创建 xxx-autoconfigure 工程
引入相关依赖 pom.xml
<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.xiao.starter</groupId>
<artifactId>luckynum-spring-boot-starter-autoconfigure</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependencies>
<!-- 所有 starter 的基本配置 -->
<dependency>
<groupId>org.springframework.boot</groupId