我想使用@ConditionalOnMissingBean?启用自定义配置和合理默认值?我有一个春季启动应用程序:
@Configuration
@Import({CustomConfiguration.class, DefaultConfiguration.class})
@EnableAutoConfiguration(exclude={MetricFilterAutoConfiguration.class})
public class Application {
@Autowired
ErrorListener errorListener;
}
Run Code Online (Sandbox Code Playgroud)
和一个CustomConfiguration允许Spring xml或组件扫描:
@Configuration("customConfiguration")
@ImportResource("classpath:customContext.xml")
@ComponentScan({"org.custom.impl"})
public class CustomConfiguration
Run Code Online (Sandbox Code Playgroud)
的DefaultConfiguration用途ConditionalOnMissingBean:
@Bean
@ConditionalOnMissingBean
ErrorListener errorListener() {
return new LoggingErrorListener();
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是允许ErrorListener在类路径中定义自定义,如果没有定义则使用默认值LoggingErrorListener(通过ConditionalOnMissingBean).我发现它DefaultConfiguration总是被用在之前CustomConfiguration.
我一直在尝试@DependsOn和@Order,但没有喜悦.