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的方法。