Springboot 自定义 starter
好了 进入主题,今天来和小伙伴们分享这个 Springboot 自定义 starter 😄
直接来到 Springboot
的官方文档中查看~
网络异常,图片无法展示
|
可以发现,它在这个自动配置的目录中,而经过之前两篇文章的分析 👇
实战分析 👉 花了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> 复制代码
打包方式选择 jar
就可以了
这里执行 maven install
命令就可以了
细节注意
- package 只打包,install 会部署到本地仓库, deploy 才会部署本地和远程仓库
spring-boot-configuration-processor
这个包的作用: 给自定义的配置类生成元数据信息的
pom
文件中引入processor
时加入true
,给其他项目选择,不会增加不必要的依赖
四. 其他项目中使用
在其他项目中引入该jar包即可~
<dependency> <groupId>org.4ye</groupId> <artifactId>hello-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency> 复制代码
代码的话呢,我放在 GitHub 上啦
网络异常,图片无法展示
|
总结
最后,老规矩,再画个图总结下~
网络异常,图片无法展示
|