文章插图
作者 | 温安适
来源 | https://my.oschina.net/floor/blog/4435699
引言【只需4步,自己搞个 Spring Boot Starter】只要你用Springboot,一定会用到各种spring-boot-starter 。其实写一个spring-boot-starter
,仅需4步 。下面我们就写一个starter,它将实现,在日志中打印方法执行时间 。
第一步 创建maven项目在使用spring-boot-starter,会发现,有的项目名称是 XX-spring-boot-starter,有的是
spring-boot-starter-XX,这个项目的名称有什么讲究呢?
从springboot官方文档摘录如下:
“从这段话可以看出spring-boot-starter命名的潜规则 。
Do not start your module names with spring-boot, even if you use a different Maven groupId. We may offer official support for the thing you auto-configure in the future.
As a rule of thumb, you should name a combined module after the starter.
命名潜规则
spring-boot-starter-XX是springboot官方的starter
XX-spring-boot-starter是第三方扩展的starter
打印方法执行时间的功能,需要用到aop,咱们的项目就叫做
aspectlog-spring-boot-starter吧 。
项目的pom文件如下:
<?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>org.example</groupId> <artifactId>aspectlog-spring-boot-starter</artifactId> <version>1.0.2</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.15.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> </dependencies></project>
关于spring-boot-configuration-processor的说明,引自springBoot官方文档:“简单说就是:写starter时,在pom中配置spring-boot-autoconfigure-processor,在编译时会自动收集配置类的条件,写到一个META-INF/spring-autoconfigure-metadata.properties中 。
Spring Boot uses an annotation processor to collect the conditions on auto-configurations in a metadata file ( META-INF/spring-autoconfigure-metadata.properties ). If that file is present, it is used to eagerly filter auto-configurations that do not match, which will improve startup time. It is recommended to add the following dependency in a module that contains auto-configurations:
org.springframework.boot
spring-boot-autoconfigure-processor
true
第二步写自动配置逻辑各种condition
类型注解说明Class Conditions类条件注解@ConditionalOnClass当前classpath下有指定类才加载@ConditionalOnMissingClass当前classpath下无指定类才加载
Bean ConditionsBean条件注解@ConditionalOnBean当期容器内有指定bean才加载@ConditionalOnMissingBean当期容器内无指定bean才加载
推荐阅读
- 姜茶怎么煮好喝,自己怎么做黑糖姜茶
- 冬季皮肤瘙痒怎么办 只需7招让你远离烦恼
- 旅行|40多岁的我终于明白,人生就是一场自己跟自己的旅行,不需要朋友
- 不花一分钱,轻松实现网站漏洞扫描,只需几分钟即可出具报告
- |人在职场,别人的屋檐再大,都不如自己有把伞,职场人心里要有数
- 花生果茶制作技术,自己如何制作水果茶
- 汽车|轿车遮挡号牌加油524元后逃单 网友:真以为自己能跑掉
- 我喜欢的小动物30个字 写一个自己喜欢的动物30字
- 人能意识到自己的死亡 人死了人的意识还有没有
- 基本的茶具有哪些,选择适合自己的那杯花草茶