您可以@Conditional
如下所示使用。
如果需要更多信息,请在评论中告知。
除主要@conditional
注释外,还有一组类似的注释可用于不同情况。
的@ConditionalOnClass
和@ConditionalOnMissingClass
注解允许基于特定类的存在或不存在要被包括配置。
例如,何时OObjectDatabaseTx.class
将其添加到依赖项,并且没有OrientWebConfigurer
bean,我们将创建配置器。
@Bean
@ConditionalOnWebApplication
@ConditionalOnClass(OObjectDatabaseTx.class)
@ConditionalOnMissingBean(OrientWebConfigurer.class)
public OrientWebConfigurer orientWebConfigurer() {
return new OrientWebConfigurer();
}
的@ConditionalOnBean
和@ConditionalOnMissingBean
注解允许基于特定豆的存在或不存在要被包括的bean。您可以使用value属性按类型指定bean,或使用name按名称指定bean。搜索属性允许您限制ApplicationContext
搜索bean时应考虑的层次结构。
当我们检查是否没有定义的bean时,请参见上面的示例。
该@ConditionalOnProperty
注释允许基于Spring的环境属性,包括配置。使用prefix和name属性指定应检查的属性。默认情况下,将存在的任何不等于属性false
匹配。您还可以使用havingValue
和matchIfMissing
属性创建更高级的检查。
@ConditionalOnProperty(value='somebean.enabled', matchIfMissing = true, havingValue="yes")
@Bean
public SomeBean someBean(){
}
该@ConditionalOnResource
注释允许被包括配置仅当特定资源是否存在。
@ConditionalOnResource(resources = "classpath:init-db.sql")
的@ConditionalOnWebApplication
和@ConditionalOnNotWebApplication
注解允许根据应用是否是一个“web应用程序”被包括配置。
@Configuration
@ConditionalOnWebApplication
public class MyWebMvcAutoConfiguration {...}
该@ConditionalOnExpression
注释允许基于SpeI位表达式的结果被包括配置。
@ConditionalOnExpression("${rest.security.enabled}==false")