我正在使用 Spring Boot 2.1.6.RELEASE,我想知道@ConditionalOnMissingBean应该如何使用?
示例配置:
@Configuration
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public Foo foo() {
return new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
@Configuration
@Import(MyAutoConfiguration.class)
public class AppConfiguration {
@Bean
public Foo foo() {
return new Foo("some property");
}
}
Run Code Online (Sandbox Code Playgroud)
AppConfiguration.class并且MyAutoConfiguration.class在不同的模块中。
错误:
无法注册在类路径资源 [com/example/autoconf/configuration/AppConfiguration.class] 中定义的 bean 'foo'。具有该名称的 bean 已经在类路径资源 [com/my/configuration/MyAutoConfiguration.class] 中定义并且覆盖被禁用。
如何在@ConditionalOnMissingBean不设置spring.main.allow-bean-definition-overriding=true属性的情况下使用?
为了MyAutoConfiguration被 Spring Boot 选择为自动配置,需要如下META-INF/spring.factories声明
org.springframework.boot.autoconfigure.EnableAutoConfiguration=x.y.z.MyAutoConfiguration
Run Code Online (Sandbox Code Playgroud)
有关自定义自动配置的更多详细信息,请参阅此处。
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |