zoukankan      html  css  js  c++  java
  • Spring实战(五)Spring中条件化地创建bean

      1、@Conditional 为生成bean设置条件

      Spring 4中引入了一个新的注解---@Conditional,它用在有@Bean的方法上。

      如果给定条件计算结果为true,Spring会创建这个bean;如果为false,忽略。

    @Bean
    @Conditional(UserExistsCondition.class)
    public User user(){
      return new User();  
    }

      这里,@Conditional 中给定了一个条件class,这就是创建bean所要满足的条件。

      这个条件class可以是任意实现了Condition接口的类型(只需实现boolean matches()方法)。

     

      2、ConditionContext接口的功能(用到的一个重要接口)

    • 借助getRegistry()返回的BeanDefinitionRegistry检查bean定义;
    • 借助getBeanFactory()返回的ConfigurableListableBeanFactory检查bean是否存在,甚至探查bean属性;
    • 借助getEnvironment()返回的Environment检查环境变量是否存在以及它的值是什么;
    • 读取并探查getResourceLoader()返回的ResourceLoader所加载的资源;
    • 借助getClassLoader()返回的ClassLoader加载并检查类是否存在;

      

      3、AnnotatedTypeMetadata接口

      用来检查带有@Bean注解的方法上还有什么其他注解,即判断是否有、有哪些。  

     

      4、Spring 4中,@Profile注解进行了重构,使其基于@Conditional和Condition实现

     

  • 相关阅读:
    Oracle启动关闭
    Open_stack 有虚拟机端口不通的问题
    关于Oracle归档的一些操作
    电脑无法开机 接通电源后主板有红灯闪烁的问题
    Centos7+python3.6+face-recognition
    电脑无法开机的问题-主板上有红色告警灯闪烁
    关于systemctl
    Vsftp搭建 for centos7
    外星人入侵——安装Pygame
    mysql索引原理详解
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8368330.html
Copyright © 2011-2022 走看看