3 回答
TA贡献1797条经验 获得超6个赞
@ConditionalOnMissingBean
将执行您的代码,而您想要的是相反的-不执行。也许您应该尝试混合使用@ConditionalOnClass
并@AutoConfigureAfter
在您发布的链接中的示例中提供。
我已经在一些与数据库相关的 bean 和Conditional
s 的操作中使用过,并且AutoconfigureAfter
确实做到了这一点。只需要更好地了解您的应用程序,以便能够提供更具体的建议
TA贡献1880条经验 获得超4个赞
问题是您只能@ConditionalOnMissingBean
在自动配置上下文中使用。javadoc 说
该条件只能匹配到目前为止已被应用程序上下文处理的 bean 定义,因此,强烈建议仅在自动配置类上使用该条件
我试图在常规应用程序中使用注释。一旦我这样做了(具体来说,将类添加到),它就可以通过使用来spring.factories
检测@EnableWebMvc
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
TA贡献1829条经验 获得超4个赞
您需要确保@ConditionalOnMissingBean
带注释的 bean 创建将在创建后 WebMvcConfigurationSupport
发生。
来自 spring文档,
当前 bean 所依赖的 beans。指定的任何 bean 都保证在该 bean 之前由容器创建。
除了此处解释的之外,还使用@DependsOn
注释。 @ConditionalOnMissingBean
并确保您在@configuration
带注释的类中执行这些操作。
@Configuration
public class Config {
@Bean
@DependsOn({"webMvcConfigurationSupport"})
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
public FileProcessor fileProcessor(){
return new FileProcessor();
}
在此示例中,仅当缺少 webMvcConfigurationSupport bean 时才会创建 fileProcessor。
添加回答
举报