前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot2.x系列教程(七)条件注解@Conditional详解及实战

Spring Boot2.x系列教程(七)条件注解@Conditional详解及实战

作者头像
程序新视界
发布2019-12-30 18:07:11
6210
发布2019-12-30 18:07:11
举报
文章被收录于专栏:丑胖侠

@Conditional是Spring Boot中大量使用的注解之一,它可以根据是否满足某一个特定条件来决定是否加载指定的Bean。本文带领大家详细了解该注解的基本功能及实战使用。

条件注解@Conditional

@Conditional是SpringFramework提供的注解,位于 org.springframework.context.annotation包内,被其注解的类会根据指定的条件进行判断,如果满足条件则进行Bean的实例化及加载,如果不符合条件则不进行加载。

比如在Spring Boot的自动配置中经常用在这样的场景:当某个待自动配置组件的jar包在类路径下时,自动配置该组件的一个或多个Bean。

除了直接使用@Conditional注解来进行判断,在Spring Boot中通常情况下使用的更多的是由@Conditional组合的具体特殊场景的注解。比如,@ConditionalOnClass注解用来检查类路径下是否有指定的类。其相关使用源码如下:

代码语言:javascript
复制
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnClassCondition.class)
public @interface ConditionalOnClass {
	// ...
}

@Conditional使用形式:

  • 类型级别,可以在@Component或是@Configuration类上使用;
  • 原型级别,用于特定自动场景注解上的注解(如上:ConditionalOnClass);
  • 方法级别,作用在任何@Bean方法上(如下例)。

另外,condition注解是不会继承的,如果一个父类使用了conditional注解,其子类是不会拥有conditions的。

源码解析

为了更好的理解@Con

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 条件注解@Conditional
  • 源码解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档