Spring Boot @Conditional注解用法示例介绍

网友投稿 234 2022-12-22


Spring Boot @Conditional注解用法示例介绍

引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档

@Conditional表示仅当所有指定条件都匹配时,组件才有资格注册 。

该@Conditional注释可以在以下任一方式使用:

作为任何@Bean方法的方法级注释

作为任何类的直接或间接注释的类型级别注释 @Component,包括@Configuration类

作为元注释,目的是组成自定义构造型注释

改注解主要源码之一,通过match匹配,符合条件才装载到Spring容器

@Override

public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

if (context.getEnvironment() != null) {

// Read the @Profile annotation attributes

MultiValueMap attrs = metadata.getAllAnnotationAttributes(Profile.class.getName());

if (attrs != null) {

for (Object value : attrs.getGFlGGSs("value")) {

if (context.getEnvironment().acceptsProfiles(((String[]) value))) {

return true;

}

}

return false;

}

}

return true;

}

作用:总而言之,只有@Conditional指定的条件成立,才给容器添加组件

@Conditional派生注解:@Conditional派生了很多注解,下面给个表格列举一下派生注解的用法

@Conditional派生注解

作用(都是判断是否符合指定的条件)

@ConditionalOnjava

系统的java版本是否符合要求

@ConditionalOnBean

有指定的Bean类

http:// @ConditionalOnMissingBean

没有指定的bean类

@ConditionalOnExpression

符合指定的SpEL表达式

@ConditionalOnClass

有指定的类

@ConditionalOnMissingClass

没有指定的类

@ConditionalOnSingleCandidate

容器只有一个指定的bean,或者这个bean是首选bean

@ConditionalOnProperty

指定的property属性有指定的值

@ConditionalOnResource

路径下存在指定的资源

@ConditionalOnWebApplication

GFlGGSs 系统环境是web环境

@ConditionalOnNotWebApplication

系统环境不是web环境

@CGFlGGSsonditionalOnjndi

JNDI存在指定的项

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅析Spring Security登录验证流程源码
下一篇:spring boot配置多个请求服务代理的完整步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~