我读到我不应该在github上打开一个问题,所以我在这里问。我已经深入研究了代码,例如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
注解。到目前为止一切顺利,如果我们阅读文档,他们说:
Sping Boot 检查您发布的jar中是否存在META-INF/spring/org.springframework.boot. autoconigure.AutoConfiguration.imports文件。
实际上,如果我们导入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.7.3</version>
</dependency>
一切正常。我对gradle不太熟练,但我在spring-boot-actuator-starter
或spring-boot-actuator-autoconfigure
中没有看到任何特殊的依赖性。在谷歌上搜索,我发现了一个讨论here,他们说:
在Sping Boot 中,2.7自动配置注册从spring.factories移动到名为META-INF/spring/org. springframework. boot. autoconfigure. AutoConfiguration. imports的新文件。每行包含自动配置的完全限定名称。为了向后兼容,spring.factories中的条目仍然会被接受。
但老实说,我已经尝试将配置类移动到新文件中,但配置类没有加载。我写了一个例子here。我的org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件:
com.example.springbootstarterexample.configuration.Config
如果我移动到旧的配置spring.factries
一切正常。
我的@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
可以工作,而我的spring-boot-starter-example
不能?
2条答案
按热度按时间laik7k3q1#
你的文件名是
org.springframework.boot.autoconfigure.AutoConfiguration.import
并且必须是
org.springframework.boot.autoconfigure.AutoConfiguration.imports
(注意结尾处多出的s
)。3bygqnnd2#
将文件
org.springframework.boot.autoconfigure.AutoConfiguration.imports
放在resource/META-INF/spring package-> ~ProjectName/src/main/resources/META-INF/spring/
下然后,此文件可以包含自定义配置文件的完全限定名,如下面的示例
com.test.autoconfigure.MongoApplicationDBConfig