- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
如何创建自己的SpringBootStarter并为其编写单元测试
创建一个新的Maven项目。第三方封装的命名格式是xxx-spring-boot-starter,例如:didispace-spring-boot-starter。
编辑pom.xml,添加spring-boot-autoconfigure和spring-boot-starter依赖
dependencies
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter/artifactId
/dependency
dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-autoconfigure/artifactId
/dependency
/dependencies
创建一个用@Configuration注释的配置类,在这里您可以使用@Bean来创建使用@ConditionalOnClass、@ConditionalOnMissingBean等条件注释来控制何时应用配置。
@Configuration
@ConditionalOnClass(MyFeature.class)
@ConditionalOnProperty(prefix=myfeature,name=enabled,matchIfMissing=true)
publicclassMyFeatureAutoConfiguration{
@Bean
@ConditionalOnMissingBean
publicMyFeaturemyFeature(){
returnnewMyFeature();
在src/mAIn/resources/META-INF目录下创建spring.factories文件,并在org.springframework.boot.autoconfigure.EnableAutoConfiguration关键字下列出您的自动配置类,比如:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.didispace.myfeature.MyFeatureAutoConfiguration
该配置的作用是让SpringBoot应用在引入您自定义Starter的时候可以自动这里的配置类。
注意:SpringBoot2.7开始,不再推荐使用spring.factories,而是改用/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,文件内容直接放需要自动加载配置类路径即可。这个变更具体可见之前的这篇文章:《SpringBoot2.7开始spring.factories不推荐使用了》
在制作SpringBootStarter的时候,一定记得使用单元测试来验证和确保自动化配置类在任何条件逻辑在启动器下能够按照正确的预期运行。
创建单元测试
使用@SpringBootTest加载完整的应用程序上下文,并验证启动程序是否正确配置了Bean和属性。
@SpringBootTest(classes=TestApplication.class)
publicclassMyStarterAutoConfigurationTest{
@Autowired(required=false)
privateMyServicemyService;
@Test
publicvoidtestMyServiceAutoConfigured(){
assertNotNull(myService,MyServiceshouldbeauto-configured
覆盖不同的配置
如果有不同的配置方案,那么还需要使用@TestPropertySource或@DynamicPropertySource覆盖属性以测试不同配置下的情况。
或者也可以直接简单的通过@SpringBootTest中的属性来配置,比如下面这样:
@SpringBootTest(properties=my.starter.
文档评论(0)