欢迎光临散文网 会员登陆 & 注册

Spring系列(六):@Conditional注解用法介绍

2022-04-05 16:28 作者:IT技术分享社区  | 我要投稿

今天给大家介绍@Conditional懒加载注解用法,希望对大家能有所帮助!       

       

1、@Conditional注解介绍

@Conditional是Spring4版本新提供的一种注解,它的作用是按照设定的条件进行判断,把满足判断条件的bean注册到Spring容器。


2、@Conditional的源码内容如下:

说明:

  • @Conditional可以作用在方法上,也可以作用在类上。

  • 使用的时候需要传入实现Condition接口类数组。

  • 如果是类和方法都加了@Conditional注解,最终在方法上的注解为最终的条件,如果返回true则加入容器,反之不会加入容器。

  • 如果只是类上加了@Conditional注解,整个类的所有方法都会加入容器中。


3、用法示例

3.1 新建Book.java 文件


3.2 CNCondition.java 文件


3.3 ZHCondition.java 文件



3.4 新建TestConditionalConfig.java 配置文件



3.5 新建TestConditional.java 测试文件



4、@Conditional应用场景

在一些需要条件满足才是实例化的类中,使用此注解,

比如项目中需要根据不同的场景使用不同的消息中间件,在消息队列的实例化bean上,使用@Conditional注解,根据配置文件的不同,来判断哪个bean需要加载到Spring容器中。

5、@Conditional的扩展注解


@ConditionalOnBean:仅在当前上下文中存在某个对象时,才会实例化一个Bean。 @ConditionalOnClass:某个class位于类路径上,才会实例化一个Bean。 @ConditionalOnExpression:当表达式值为true的时候,才会实例化一个Bean。 @ConditionalOnMissingBean:仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean。 @ConditionalOnMissingClass:某个class类路径上不存在的时候,才会实例化一个Bean。 @ConditionalOnNotWebApplication:非web应用,才会实例化一个Bean。 @ConditionalOnBean:当容器中有指定Bean的条件下进行实例化。 @ConditionalOnMissingBean:当容器里没有指定Bean的条件下进行实例化。 @ConditionalOnClass:当classpath类路径下有指定类的条件下进行实例化。 @ConditionalOnMissingClass:当类路径下没有指定类的条件下进行实例化。 @ConditionalOnWebApplication:当项目是一个Web项目时进行实例化。 @ConditionalOnNotWebApplication:当项目不是一个Web项目时进行实例化。 @ConditionalOnProperty:当指定的属性有指定的值时进行实例化。 @ConditionalOnExpression:基于SpEL表达式的条件判断。 @ConditionalOnJava:当JVM版本为指定的版本范围时触发实例化。 @ConditionalOnResource:当类路径下有指定的资源时触发实例化。 @ConditionalOnJndi:在JNDI存在的条件下触发实例化。 @ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者有多个但是指定了首选的Bean时,才会触发实例化。





Spring系列(六):@Conditional注解用法介绍的评论 (共 条)

分享到微博请遵守国家法律