如何写SpringBootStarter 通过一个例子让你掌握starter
1.spring-booter-starer是什么
Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。使用者只需要依赖相应功能的Starter,无需做过多的配置和依赖,Spring Boot就能自动扫描并加载相应的模块。
总结:
它整合了这个模块需要的依赖库;
提供对模块的配置项给使用者、并可以对配置项提供默认值,使得使用者可以不指定配置时提供默认配置项值,也可以根据需要指定配置项值;
提供自动配置类对模块内的Bean进行自动装配
例如,在Maven的依赖中加入spring-boot-starter-web就能使项目支持Spring MVC,并且Spring Boot还为我们做了很多默认配置,无需再依赖spring-web、spring-webmvc等相关包及做相关配置就能够立即使用起来。
官方提供的starter有50多种,见
Spring Boot Reference Guide
2 如何开始写一个starter
idea创建项目 -> 这个就没什么好写的 就和普通的工程的一样。
注意⚠️:
在pom.xml里面尽量import最小的依赖 千万不要像做工程一样 什么spring-boot-web这种倒入。
2.1 resources下面创建META-INFO文件夹,创建spring.factories文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sNPrJHy-1666268895161)(img.png)]
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.chen.operationlogstarter.aspect.config.OperationLogAutoConfig
2.2 配置好上面的Config Bean
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRzd5EQs-1666268895163)(img_1.png)]
@Configuration
@ConditionalOnClass(OperationLogConfigProperties.class)
@EnableConfigurationProperties(OperationLogConfigProperties.class)
@ComponentScan(basePackages = {"com.chen.*"})
public class OperationLogAutoConfig {
}
2.3 把项目打包
mvn clean install -> 推送到远程仓库
2.4
然后在你需要的项目里面引入坐标
<dependency>
<groupId>com.xxxx</groupId>
<artifactId>operationlog-sdk</artifactId>
<version>${operation-log-sdk}</version>
</dependency>
通过一个例子 抽取通用功能 让你的代码优雅起来`
3.以公司需求写一个starter
一个通用日志异步保存在数据库的starter。轻微配置就ok了