SpringBoot-Condition

2018-01-11  本文已影响0人  lazyguy

spring提供的注册条件相关的注解:

注解 判断逻辑
ConditionalOnBean 可以通过多种条件查找spring容器中是否有匹配的bean
ConditionalOnClass 类加载器中是否存在对应的类。可以通过Class指定(value属性)或者Class的全名指定(name属性)。如果是多个类或者多个类名的话,关系是”与”关系,也就是说这些类或者类名都必须同时在类加载器中存在
ConditionalOnCloudPlatform 判断
ConditionalOnExpression 判断对应的s
ConditionalOnJava 指定Java版本是否符合要求。内部有2个属性value和range。value表示一个枚举的Java版本,range表示比这个老或者新于等于指定的Java版本(默认是新于等于)。内部会基于某些jdk版本特有的类去类加载器中查询,比如如果是jdk9,类加载器中需要存在java.security.cert.URICertStoreParameters;如果是jdk8,类加载器中需要存在java.util.function.Function;如果是jdk7,类加载器中需要存在java.nio.file.Files;如果是jdk6,类加载器中需要存在java.util.ServiceLoader
ConditionalOnJndi 判断逻辑
ConditionalOnMissingBean 判断逻辑
ConditionalOnMissingClass 判断逻辑
ConditionalOnNotWebApplication 判断逻辑
ConditionalOnProperty 判断spring的环境中对应的property属性去判断是否匹配
ConditionalOnResource 判断是否存在指定的资源文件。只有一个属性resources,是个String数组。会从类加载器中去查询对应的资源文件是否存在
ConditionalOnSingleCandidate Spring容器中是否存在且只存在一个对应的实例。只有3个属性value、type、search。跟ConditionalOnBean中的这3种属性值意义一样
ConditionalOnWebApplication

这些注解既可以放在被标记了@Configuration的类上,也可以放在标记了@Bean的方法上。
作用就是按条件限制 注册类或者某个生成bean的方法。

上一篇下一篇

猜你喜欢

热点阅读