简单两步搞定Springboot自定义starter
小伙伴们早呀,最近是三伏天,真的是超级热 😱
先来一句~ (哈哈哈)
Springboot 自定义 starter
好了 进入主题,今天来和小伙伴们分享这个 Springboot 自定义 starter 😄
直接来到 Springboot
的官方文档中查看~
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-auto-configuration
可以发现,它在这个自动配置的目录中,而经过之前两篇文章的分析 👇
实战分析 👉 花了2个钟才搞懂这AOP为啥没生效,水友却睡着了……
原理分析 👉 Springboot自动装配原理探索
相信小伙伴们对这个自动配置和自定义stater 有了初步的了解,那么我们来看看官网是真么说的叭
Auto-configuration can be associated to a “starter” that provides the auto-configuration code as well as the typical libraries that you would use with it.
就是说可以将自动配置类和依赖包进行打包,成为一个 starter
,来给其他人使用
看完官网后我发现貌似也没啥好写的🙃
貌似就这一点点知识了……🐷
自动配置的各种条件注解 自定义 starter 的命名规范 如: xxx-spring-boot-starter
那咱们就来看看这个小例子叭😄
思路
准备自动配置类
配置
spring.factories
部署到本地仓库
在其他项目中引用
一.自动配置类
这里参考下 redis
的自动配置类
这里使用到了很多条件注解,比如:
@ConditionalOnClass(RedisOperations.class)
当存在这个RedisOperations.class
时,这个配置才有效,而这个配置又是在我们引入的jar中有的@ConditionalOnMissingBean(name = "redisTemplate")
当没有这个redisTemplate
的bean时有效@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
确保RedisConnectionFactory
创建之后才创建这个redisTemplate
然后,我们自己的就没那么复杂啦,就这么点~
@EnableConfigurationProperties(HelloProperties.class)
public class HelloAutoConfiguration {
@Bean
@ConditionalOnMissingBean(HelloTest.class)
public HelloTest getHelloTest(){
return new HelloTest();
}
}
读取 HelloProperties
配置类,然后创建 HelloTest
这个 bean
😄
二.配置 spring.factories
在 META-INF/spring.factories
中进行配置 如:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.java4ye.demo.config.HelloAutoConfiguration
三.部署到本地仓库
参考官网的命名方式,配置我们的 pom
文件👇
<groupId>org.4ye</groupId>
<artifactId>hello-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
打包方式选择 <packaging>jar</packaging>
就可以了
这里执行 maven install
命令就可以了
细节注意
package 只打包,install 会部署到本地仓库, deploy 才会部署本地和远程仓库
spring-boot-configuration-processor
这个包的作用:给自定义的配置类生成元数据信息的pom
文件中引入processor
时加入<optional>true</optional>
,给其他项目选择,不会增加不必要的依赖
四. 其他项目中使用
在其他项目中引入该jar包即可~
<dependency>
<groupId>org.4ye</groupId>
<artifactId>hello-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
代码的话呢,我放在 GitHub 上啦
地址👉 https://github.com/RyzeYang/springboot-demo-4ye
总结
最后,老规矩,再画个图总结下~
最后
欢迎小伙伴们来一起探讨问题~
如果你觉得本篇文章还不错的话,那拜托再点点赞支持一下呀😝
让我们开始这一场意外的相遇吧!~
欢迎留言!谢谢支持!ヾ(≧▽≦*)o 冲冲冲!!
我是4ye 咱们下期应该……很快再见!! 😆
往期推荐