Spring Boot 2.7.2自定义starter的AutoConfiguration.imports无法识别配置类
背景观察
我研究了spring-boot-actuator-autoconfigure的代码,发现它并未在META-INF/spring.factories中定义@Configuration/@AutoConfiguration类,该文件内容如下:
org.springframework.boot.diagnostics.FailureAnalyzer=\ org.springframework.boot.actuate.autoconfigure.metrics.ValidationFailureAnalyzer
确认ValidationFailureAnalyzer并未标注@Configuration/@AutoConfiguration注解。同时它通过META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件声明所有@AutoConfiguration类,文件片段如下:
org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration ...
这些类均标注了@AutoConfiguration注解。
根据官方文档说明:
Spring Boot会检查已发布jar包中是否存在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件。
引入spring-boot-starter-actuator依赖时一切正常:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.7.3</version> </dependency>
搜索到相关讨论提到:
在Spring Boot 2.7版本中,自动配置注册从spring.factries迁移至新文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,每行对应一个自动配置类的全限定名,同时兼容旧的spring.factries配置。
自身问题
我尝试将自定义配置类移至该新文件后,配置类并未被加载。我的AutoConfiguration.imports文件内容为:
com.example.springbootstarterexample.configuration.Config
而使用旧的spring.factories配置时一切正常。
我的@AutoConfiguration类代码如下:
@AutoConfiguration(after = JpaRepositoriesAutoConfiguration.class) //@AutoConfigureAfter(JpaRepositoriesAutoConfiguration.class) @EnableJpaRepositories(basePackages = "com.example.springbootstarterexample.repository") @Import({SomeServiceImpl.class, SomeEntityController.class}) public class ExampleAutoConfiguration { }
疑问
为何spring-boot-starter-actuator可正常工作,而我的自定义starter却不行?我哪里操作有误?
内容的提问来源于stack exchange,提问作者Pp88

