zoukankan      html  css  js  c++  java
  • spring IoC (七)Bean的依赖检查

      在使用Spring的时候,如果应用设计比较复杂,那么在这个应用中,IoC管理的Bean的个数可能非常多,

    这些Bean之间的相互依赖关系也会非常复杂。在一般情况下,Bean的依赖注入是在应用第一次向容器索取Bean

    的时候发生,这个时候,不能保证注入一定能够成功,如果需要重新检查这些依赖关系的有效性,会是意见很

    繁琐的事情。为了解决这样的问题,在Spring IoC容器中,设计了一个依赖检查特性,需要在Bean定义中设置

    dependency-check属性来指定依赖检查模式即可,可以设置为none、simple、object、all四种模式,

    默认是none。

    populateBean中checkDependencies

     1     protected void checkDependencies(
     2             String beanName, AbstractBeanDefinition mbd, PropertyDescriptor[] pds, PropertyValues pvs)
     3             throws UnsatisfiedDependencyException {
     4 
     5         int dependencyCheck = mbd.getDependencyCheck();
     6         for (PropertyDescriptor pd : pds) {
     7             if (pd.getWriteMethod() != null && !pvs.contains(pd.getName())) {
     8                 boolean isSimple = BeanUtils.isSimpleProperty(pd.getPropertyType());
     9                 boolean unsatisfied = (dependencyCheck == RootBeanDefinition.DEPENDENCY_CHECK_ALL) ||
    10                         (isSimple && dependencyCheck == RootBeanDefinition.DEPENDENCY_CHECK_SIMPLE) ||
    11                         (!isSimple && dependencyCheck == RootBeanDefinition.DEPENDENCY_CHECK_OBJECTS);
    12                 if (unsatisfied) {
    13                     throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, pd.getName(),
    14                             "Set this property value or disable dependency checking for this bean.");
    15                 }
    16             }
    17         }
    18     }
  • 相关阅读:
    表达式和计算的描述
    表达式和计算的描述
    递归算法浅谈
    编程基本功训练:流程图画法及练习
    【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!
    VS2008下直接安装使用Boost库1.46.1版本号
    android关键组件service服务(一)
    U盘安装咱中国人自己的操作系统UbuntuKylin14.04LST(超具体原创图文教程)
    数据流图的画法
    匈牙利算法
  • 原文地址:https://www.cnblogs.com/toUpdating/p/9728733.html
Copyright © 2011-2022 走看看