问题
在项目构建时,需要某些bean满足某种条件才加载。如何开发呢?
解决
使用@Conditional相关注解即可。
总结
注解 | 作用 |
@ConditionalOnProperty | application.properties 或 application.yml中是否有满足条件的配置 |
@ConditionalOnBean | Bean 已经存在应用上下文时才会加载 |
@ConditionalOnMissingBean | Bean 不存在应用上下文时才会加载 |
@ConditionalOnClass | 某个类存在于 classpath 中才加载 |
@ConditionalOnMissingClass | 某个类不存在于 classpath 中才加载 |
@ConditionalOnExpression | 当条件为true时才加载 |
@ConditionalOnSingleCandidate | 只有指定类已存在于 BeanFactory 中,并且可以确定单个 |
@ConditionalOnResource | 加载的 bean 依赖指定资源存在于 classpath |
@ConditionalOnJndi | 只有指定的资源通过 JNDI 加载后才加载 bean |
@ConditionalOnJava | 只有运行指定版本的 Java 才会加载 Bean |
@ConditionalOnWebApplication | 只有运行在 web 应用里才会加载这个 bean |
@ConditionalOnNotWebApplication | 只有运行在非 web 应用里才会加载这个 bean |
@ConditionalOnCloudPlatform | 只有运行在指定的云平台上才加载指定的 bean,CloudPlatform 是 org.springframework.boot.cloud 下一个 enum 类型的类 |
使用示例
@ConditionalOnProperty
application.properties 或 application.yml中是否有满足条件的配置
配置文件
abc.dddddd=true
Java
@ConditionalOnProperty(prefix = "abc",name = "dddddd",havingValue = "true")