gpt4 book ai didi

java - Spring配置类加载顺序与spring-boot @ConditionalOnMissingBean?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:18 25 4
gpt4 key购买 nike

我想使用 @ConditionalOnMissingBean 启用自定义配置和合理的默认值?我有一个 spring boot 应用程序:

@Configuration
@Import({CustomConfiguration.class, DefaultConfiguration.class})
@EnableAutoConfiguration(exclude={MetricFilterAutoConfiguration.class})
public class Application {

@Autowired
ErrorListener errorListener;
}

和一个允许 Spring xml 或组件扫描的 CustomConfiguration:

@Configuration("customConfiguration")
@ImportResource("classpath:customContext.xml")
@ComponentScan({"org.custom.impl"})
public class CustomConfiguration

DefaultConfiguration 使用ConditionalOnMissingBean:

@Bean
@ConditionalOnMissingBean
ErrorListener errorListener() {
return new LoggingErrorListener();
}

我想要实现的是允许在类路径中定义自定义 ErrorListener,如果未定义则使用默认的 LoggingErrorListener(通过 ConditionalOnMissingBean).我发现 DefaultConfiguration 总是在 CustomConfiguration 之前使用。

我一直在尝试使用 @DependsOn@Order 但并不开心。

最佳答案

如果我是你,我不会在自动配置类之外使用 @ConditionalOnMissingBean,除非你可以控制 @Configuration 类的导入顺序。自动配置会明确执行,但普通用户配置类(特别是如果它们是 @ComponentSCanned)没有定义的顺序。

关于java - Spring配置类加载顺序与spring-boot @ConditionalOnMissingBean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com