spring-boot - @ConditionalOnMissingBean 不能被覆盖
问题描述
我正在使用 Spring Boot 2.1.6.RELEASE,我想知道@ConditionalOnMissingBean
应该如何使用?
示例配置:
@Configuration
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public Foo foo() {
return new Foo();
}
}
@Configuration
@Import(MyAutoConfiguration.class)
public class AppConfiguration {
@Bean
public Foo foo() {
return new Foo("some property");
}
}
AppConfiguration.class
并且MyAutoConfiguration.class
在不同的模块中。
错误:
无法注册在类路径资源 [com/example/autoconf/configuration/AppConfiguration.class] 中定义的 bean 'foo'。已在类路径资源 [com/my/configuration/MyAutoConfiguration.class] 中定义了具有该名称的 bean,并且禁用了覆盖。
如何在@ConditionalOnMissingBean
不设置spring.main.allow-bean-definition-overriding=true
属性的情况下使用?
解决方案
为了MyAutoConfiguration
被 Spring Boot 拾取为自动配置,它需要如下META-INF/spring.factories
声明
org.springframework.boot.autoconfigure.EnableAutoConfiguration=x.y.z.MyAutoConfiguration
有关自定义自动配置的更多详细信息,请查看此处。
推荐阅读
- apache-kafka - 有没有办法从消息中确定logstash输入插件?
- javascript - 需要帮助开始使用 Flexbox 的下拉菜单
- xml - 使用 powershell 从 TXT 到 XML
- snmp - 读取、解释和导出 SNMP 消息
- powershell - Powershell DataTable 以错误的顺序显示标题
- android - 如何在 Android Studio 中的 Fragment 中实现 onback press
- c++ - 关于任何对内的最大距离优化两种类型点的配对
- python - 将标准化/标准化与 K-Fold 交叉验证结合使用的正确方法是什么?
- android - ACCESS_MEDIA_LOCATION 权限请求未显示提示
- javascript - Window.open 打开新窗口,但服务器显示“找不到 URL”。有没有办法捕捉这种情况?