什么是Starter

SpringBoot是由许多的Starter组成的,Starter是SpringBoot非常重要的一部分,它是一些jar包,也可以理解为一个可拔插式的插件。正是因为这些starter,我们在需要使用某个插件时开发者不需要关注各种依赖库的处理,不需要具体的配置信息,而是由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入相应的Bean。

比如:你想使用Reids插件,那么可以使用spring-boot-starter-redis;如果想使用MongoDB,可以使用spring-boot-starter-data-mongodb

为什么要自定义Starter

我们在开发过程中,经常会有使用一些独立于业务之外的配置模块或工具。如果我们将这些可独立于业务代码之外的功能配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配。不需要重复编写,方便快捷,而且方便管理。

创建一个简单的Starter

现在我们通过创建一个简单的starter来说明自定义starter的创建。

  1. 先创建一个新的SpringBoot项目

自定义stater的创建-编程之家

将lombok和spring-boot-configuration-processor两个依赖勾上。

spring-boot-configuration-processor的作用是在配置文件中写配置时有提示

自定义stater的创建-编程之家

  1. 新建一个User类
@ConfigurationProperties("lmc.simple")//配置文件时的前缀
@Data
@Configuration
public class User {private int id;private String name;
}
  1. 新建一个配置类
@Configuration
@Data
@ComponentScan
public class MyStarterConfig {@Bean//返回的User为一个Bean,并放到ioc容器中public User user() {return new User();}
}
  1. 在resources下创建META_INF/spring.factories

自定义stater的创建-编程之家

在spring.factories文件中配置自己的自动配置类

#spring-boot-start
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.lmc.simplestarter.MyStarterConfig

将原有的配置文件和主启动类删除

  1. 修改pom.xml文件
<groupId>com.lmc</groupId>
<artifactId>lmc-simple-spring-boot-starter</artifactId><!--starter的名称-->
<version>0.0.1-SNAPSHOT</version> <!--版本号-->

删除pom.xml中的build内容,不然会报错

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins>
</build>

6.生成starter

自定义stater的创建-编程之家

在maven中进行打包,先点击闪电图标将test屏蔽,然后执行install进行打包

经过上面的过程就生成了自己的starter,并保存到了我们本地的maven中。

  1. starter的使用

自定义starter的使用和我们平常开发使用其他插件导入依赖一样。

<groupId>com.lmc</groupId>
<artifactId>lmc-simple-spring-boot-starter</artifactId>
<version>0.0.1</version>

新建一个测试项目,只需将上面的内容加入到项目中的pom.xml文件中。

在全局配置文件中配置属性。

lmc:simple:id: 1name: '小王'

编写测试类

自定义stater的创建-编程之家
更多内容请移步个人博客:乌托邦