SpringBoot开发自定义starter 什么是starter
Starter可以理解为一个可拔插式的插件,提供一系列便利的依赖描述符,您可以获得所需的所有Spring和相关技术的一站式服务。应用程序只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。用一句话描述,就是springboot的场景启动器。
下面是Spring官方提供的部分starter,全部的请参考官网:
官方starter 开始自定义starter前看看Springboot的AutoConfiguration机制。
Spring boot的AutoConfiguration机制
标记一个应用为Springboot应用,需要一个SpringBootApplication注解,下面是一个标准的spring boot启动程序。
SpringBootApplication SpringBootApplication注解又被一个EnableAutoConfiguration注解,EnableAutoConfiguration注解就是自动加载配置的关键。
SpringBootApplication注解 EnableAutoConfiguration是一个组合注解,用Import把AutoConfigurationImportSelector导入容器中,springboot启动的时候会加载所有的selector并执行selectImports方法,这个方法会加载META-INF/spring.factories中配置的EnableAutoConfiguration,从而加载自动配置。
EnableAutoConfiguration 自定义Starter
1、创建一个工程id-spring-boot-starter,在pom文件中添加以下依赖,我们自定义的starter一般以xxx-spring-boot_starter命名。
添加依赖 2、定义一个映射配置新的的类IDProperties,添加注解ConfigurationProperties(prefix = "id"),我们的配置文件以id开头,比如id.mathine-id=110
IDProperties 3、创建一个服务IDService,构造函数接收IDProperties,具体代码
IDService 4、创建Configuration类IDConfiguration,添加注解Configuration和EnableConfigurationProperties,把当前类设置成配置类,并且注入IDProperties。
IDConfiguration 5、重要的一步,在resources目录下创建META-INF目录,并添加文件spring.factories。在这个文件中配置EnableAutoConfiguration,具体如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.idspringbootstarter.IDConfiguration
测试自定义的Starter
1、创建一个模块,添加刚才开发好的依赖
添加依赖 2、在application.yml文件中添加我们定义的machineid,
machineid 3、创建一个IDController,把IDService注入进来,用IDService生产一个ID
IDController 4、启动服务,进行测试
测试结果