Get*_*mes 6 java spring spring-boot
我想使用@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,但没有喜悦.
@ConditionalOnMissingBean如果我是你,我不会在自动配置类之外使用,除非你可以控制@Configuration类的导入顺序。自动配置明确地做到了这一点,但普通的用户配置类(特别是如果它们是@ComponentSCanned)没有定义的顺序。
| 归档时间: |
|
| 查看次数: |
10436 次 |
| 最近记录: |