在Spring框架中, @Conditional
注解及其相关的条件注解可以根据特定条件来控制Bean的创建和装配。
1. @ConditionalOnProperty
基于配置属性的条件注解,根据配置文件中的属性值决定是否创建Bean。
@Configuration
@ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true")
public class MyFeatureConfig {
}
2. @ConditionalOnBean
当指定的Bean存在时才会创建当前Bean。
@Configuration
@ConditionalOnBean(DataSource.class)
public class MyDatabaseConfig {
}
3. @ConditionalOnClass
当指定的类存在于类路径中时才会创建Bean。
@Configuration
@ConditionalOnClass(name = "org.springframework.data.redis.core.RedisTemplate")
public class RedisConfig {
}
4. @ConditionalOnMissingBean
当指定的Bean不存在
时才会创建当前Bean。
5. @ConditionalOnMissingClass
指定的类不存在于类路径
中时才会创建Bean。
6. @ConditionalOnExpression
基于SpEL表达式的条件注解,根据表达式的结果决定是否创建Bean。
7. @ConditionalOnWebApplication
在Web应用程序环境
下才会创建Bean。
8. @ConditionalOnNotWebApplication
在非Web应用程序环境下才会创建Bean。
9. @ConditionalOnResource
当指定的资源存在时才会创建Bean。
10. @ConditionalOnJndi
当指定的JNDI位置
存在时才会创建Bean。
11. @ConditionalOnCloudPlatform
在特定云平台环境下才会创建Bean。
12. @ConditionalOnJava
基于Java版本的条件注解,根据Java版本决定是否创建Bean。
13. @ConditionalOnPropertyMissing
当指定的属性值不存在
时才会创建Bean。
14. @ConditionalOnSingleCandidate
当指定类型的Bean只有一个候选时才会创建Bean。
15. @ConditionalOnEnabledHealthIndicator
启用健康指标
时才会创建Bean。
这些条件注解可以根据不同的条件来选择性
地创建Bean,使得应用程序的配置更加灵活和可控。