condition系列注解全面罗列

更新时间:2023-06-03 07:23:37 阅读: 评论:0

condition 系列注解全⾯罗列
在spring某些场景下,我们希望随着某些配置项/类的存在与否,决定⼀些bean是否被实例化并加载到spring容器。@Conditional系列注解,便是这个问题的解决⽅案。
⽂章⽬录
相关注解罗列
1. @Conditional 注解 (spring context 包下注解)
需要给定⼀个value参数,value必须继承Condition接⼝,实现match⽅法。举例:声明⼀个名为datasource的bean,我们希望只有在存在配置项 abled 并且为true时才加载该bean。2. @ConditionalOnProperty 注解 (spring boot 包下注解)
@ConditionalOnProperty 是springboot基于上述@Conditional注解实现的,他的功能单⼀但是使⽤上更加简单。当存在指定配置项为指定value时,该bean才会被加载。
在 1 中的需求,这⾥只需要⼀⾏注解便可以实现。@Configuration public class BeanConfig {    @Conditional({DataSourceCondition.class})    @Bean(name = "datasource")    public DataSource(){     
  return DataSource build =  ate()          .driverClassName("test")            .url("test")            .urname("test")            .password("test")            .build();    }    }
1
2
3
4
5
6
7
8
9
10
11
腰花怎么做
12
13
14
15
16public class DataSourceCondition implements Condition {        @Override    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {        //获取ioc 使⽤的beanFactory        ConfigurableListableBeanFactory beanFactory = BeanFactory();        ClassLoader classLoader = ClassLoader();        Environment environment = Environment();        BeanDefinitionRegistry registry = Registry();        String property = Property("abled");        if (property.equals(true)){            return true;        }        return fal;    }}
1
2
3
4
5
6
经典好歌
7
8
9
10
11
12
13
14
15
16
17
注解主要参数解释
3. @ConditionalOnClass (spring boot 包下注解)存在指定的class,才会加载该bean。其他同2
参数: Class<?>[] value() default {};
4. @ConditionalOnBean (spring boot 包下注解)存在指定的bean,才会加载该bean。其他同2贯口大全
注解主要参数解释
5. @ConditionalOnMissingClass (spring boot 包下注解)不存在指定的class,才会加载该bean。其他同2
参数: Class<?>[] value() default {};@ConditionalOnProperty(name = "abled", havingValue = "true")@Bean(name = "datasource")    public DataSource(){        return DataSource build =  ate()          .driverClassName("test")            .url("test")            .urname("test")            .password("test")            .build();    }
1
2
3
4
5
6
7
8
9
10    // 指定的配置项 String[] value() default {};  // 配置项等于这个值,才加载bean  String havingValue() default ""; // 如果没有配置项,是否⽣效/加载bean  boolean matchIfMissing() default fal;
1
2
3
4
5
6
7
8 /**    * 需要作为条件的类的Class 对象数组    */    Class<?>[] value() default {};    /**    * 需要作为条件的类的Name()    */    String[] type() default {};    /**    *  (⽤指定注解修饰的bean)条件所需的注解类    */    Class<? extends Annotation>[] annotation() default {};    /**    * spring 容器中bean 的名字    */    String[] name() default {};    /**    * 搜索容器层级,当前容器,⽗容器    */    SearchStrategy arch() default SearchStrategy.ALL;    /**    * 可能在其泛型参数中包含指定bean 类型的其他类    */    Class<?>[] parameterizedContainer() default {};
1
2
3
4
5
6
7
8
什么云什么布
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
6. @ConditionalOnMissingBean (spring boot 包下注解)不存在指定的bean,才会加载该bean。其他同2
注解主要参数解释
7. @ConditionalOnCloudPlatform (spring boot 包下注解)是否配置了SAP/CLOUD_FOUNDRY/HEROKU/KUBERNETES/等云平台 其他同2
8. @ConditionalOnExpression (spring boot 包下注解)可通过spring提供的spEL表达式灵活配置 其他同2
9. @ConditionalOnJava (spring boot 包下注解)可通过javaVersion限制是否加载该bean 其他同2
注解主要参数解释
10. @ConditionalOnNotWebApplication (spring boot 包下注解)当前不是web环境才加载 其他同2 /**    * 需要作为条件的类的Class 对象数组    */    Class<?>[] value() default {};    /**    * 需要作为条件的类的Name()    */    String[] type() default {};    /**      是否有需要过滤掉的⼦类    */    Class<?>[] ignored() default {};    /**      同上,Name()    */    String[] ignoredType() default {};    /**    *  (⽤指定注解修饰的bean)条件所需的注解类    */    Class<? extends Annotation>[] annotation() default {};    /**    * spring 容器中bean 的名字    */    String[] name() default {};    /**    * 搜索容器层级,当前容器,⽗容器    */    SearchStrategy arch() default SearchStrategy.ALL;    /**    * 可能在其泛型参数中包含指定bean 类型的其他类    */    Class<?>[] parameterizedContainer() default {};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
内涵小故事15
16
17
18
19
20
21
22梦见西瓜是什么意思
23
24
25
26
27
28
29
30
31
32
33// 需要⽐较的java 版本JavaVersion value();// 当前实际java 版本如何与java ⽐较,EQUAL_OR_NEWER 代表更新才加载,OLDER_THAN 代表版本更⽼才加载Range range() default Range.EQUAL_OR_NEWER;
1
2
3
4
5
11. @ConditionalOnWebApplication (spring boot包下注解)
当前是web环境才加载 其他同2
12. @ConditionalOnWarDeployment (spring boot包下注解)
什么样的月亮
当前是war包部署才加载 其他同2
13. @ConditionalOnWarDeployment (spring boot包下注解)
当前是war包部署才加载 其他同2
曼德拉逝世
14. @ConditionalOnResource (spring boot包下注解)
String[] resources参数指定的静态资源⽂件存在,才加载 其他同2
15. @ConditionalOnSingleCandidate (spring boot包下注解)
指定bean只有拥有唯⼀“候选bean”时,才加载 参数含义同ConditionalOnBean

本文发布于:2023-06-03 07:23:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/844431.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:注解   指定   加载   存在
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图