如何开发自己的Spring Boot Starter
我们在使用 Spring Boot 的过程中,往往都是在pom.xml里加了一系列的依赖,而后启支一个包含main方法的Application,一切就OK啦。给你我的感觉,就像是自己要动手做个菜,自己不再需要准备每一部分的原材料,直接购买包装好的一份菜的原料,下锅就可。
那我们详细看下,这份「包装好」的原料中,究竟做了些什么。
增加Starter依赖
这里增加的依赖,除了我们之前在Maven中熟习的之外,还有少量都是长这个样子:
名为xxx-starter,比方
具体这些starter是怎样起作用的呢,他们什么时候开始工作的?
一切都要从入口处说起。我们以上面的starter为例,看到这个mybatis的starter,其对应的pom中,包含这些依赖
我们看到,相当于我们增加了一个Starter的依赖,其背后会引入许多其定义的其余依赖,通过 Maven 的传递依赖,这些都会被自动增加了进来。
自动配置
相比传统的依赖,我们看到其中包含这样一个:mybatis-spring-boot-autoconfigure,这也是每个Starter的秘密所在:「AutoConfigure」
它会在实现时,考虑应用中的其余部分因素,「推断」你所需要的 Spring 配置。
在Spring Boot中,我们最大的感受是配置仿佛都被做好了,直接使用就可,这就是
spring-boot-autoconfigure. ? 每个starter都有一个名为spring.factories
的文件,存放在META-INF目录下,其中的内容相似下面这个样子:
所有需要自动配置的Class,都需要配置成key是EnableAutoConfiguration的。
我们来看类的内部
Class 之上, 有不少注解来标识,有几点需要关注的:
其中有标准的 Spring?配置注解?@Configuration
几个@ConditionalXX
标识执行顺序的@AutoConfigureAfter
其中,@ConditionalOnClass?标识?SqlSessionFactory类存在时,执行该配置,?@ConditionalOnBean标识DataSource?Bean在 Spring Context时,执行配置。
这些spring.factories是怎样被识别的呢? 这就得夸下 Spring 的FactoriesLoader了。
看下官方文档说明
启动的时候,根据ClassLoader中的jar,扫描所有?spring.factories,将其中符合条件的过滤出来,执行对应的配置。重点可以关注下
AutoConfigurationImportFilter类,
、
经过这里的执行之后, filter方法把符合条件的过滤出来了。
创立自己设置Starter
经过上面两步,我们大概知道 Starter的工作原理。有时候,我们需要对外提供少量工具组件时,也想以 Starter 的形式提供出来,供别人使用。步骤也还算清晰,照葫芦画瓢。
先创立自己的板块
添加需要用到的依赖
创立对应的?AutoConfiguration类
创立META-INF/spring.factories?文件
此时,就不需要再将 Spring Boot 做为 Parent依赖,在单独的依赖中添加
AutoConfiguration类也简单,照上面的创立一个
而后,添加文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.demo.HelloServiceAutoConfiguration
在需要这个服务的地方,直接引入依赖就OK啦。
欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)正当利用自己每一分每一秒的时间来学习提升自己,不要再用”没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何开发自己的Spring Boot Starter