要想自定义一个Starter模块,就需要理解自动装配的原理。首先,想想我们自动装配涉及到哪些关键的类或者属性文件?无非就是配置类+spring.factories属性文件。
1自定义starter的条件
- 根据条件检查classpath下对应的类,也就是说需要提供对应可检查的类。
- 当满足条件时能够生成自定义的Bean,并注册到容器中去。
- 能够自动配置项目所需要的配置。
1.1定义好需要通过配置类来实例化的Bean
1.2定义好属性类
这里通过@ConfigurationProperties注解
将application.properties
前缀为msg
的配置信息与MsgProperties的属性绑定。
1.3定义好配置类
1.4定义好spring.factories属性文件
要想实现自动配置,那么spring.factories属性文件是必不可少的,因为SpringBoot需要通过spring.factories找到需要实例化的配置类。然后通过SPI的方式来实例化。所以,我们需要在resources 下面增加 META-INF/spring.factories。
1.5打包上传到本地仓库
上面的步骤都搞好之后,我们这个自定义的starter模块差不多就可以用了,为了上其他项目可以引入我们的自定义的starter模块,我们需要通过mvn install
命令将这个starter包上传到我们本地仓库或者私服。
1.6在application.properties文件中增加配置
msg.url=127.0.0.1
msg.content=nice to meet you
1.7测试
总结
本文完整的演示了一遍如何自定义starter模块。其实理解了自动装配的原理就很好的能自定义一个starter模块。它的工作流程无非就三步:
- Spring Boot在启动时会扫描项目所依赖的JAR包,寻找包含spring.factories属性文件的JAR包。
- 根据spring.factories配置加载EnableAutoConfiguration。
- 根据@Conditional注解的条件,进行自动配置并将Bean注入到Spring容器。