zoukankan      html  css  js  c++  java
  • Spring注入的反射解释

    对于如下配置片段: 

    1.  <bean id="id" class="lee.Aclass">
    2.  <!--property配置需要依赖注入的属性-->
    3.  <property name="aaa" value="aVal"/>
    4.  <property name="bbb" value="bVal"/>
    5.  ...
    6.  </bean>

    Spring将会为每个bean元素创建一个Java对象(即bean实例)。而Spring将采用类似于如下的代码创建Java实例。

    1.  //获取lee.AClass类的Class对象
    2.  Class targetClass = Class.forName("lee.AClass");
    3.  //创建Lee.AClass类的默认实例
    4.  Object bean = targetClass.newInstance();

    创建实例后,Spring接着遍历bean元素中所有的property子元素,bean元素没包含一个property子元素,spring将为该bean实例调用一次setter方法。

    类似如下代码:

    1.  //获取aaa的属性对应的setter方法名
    2.  String _setName1 = "set" +"Aaa";
    3.  /获取lee.Class类中的setAaa()方法
    4.  Method setMethod1 = targetClass.getMethod(setName1,aVal.getClass());
    5.  //调用bean实例的setAaa()方法
    6.  setMethod1.invoke(bean,aVal);

    通过上述代码,Spring就可以根据配置文件的信息来创建Java实例。并将为该Java实例注入合理的属性值。

  • 相关阅读:
    设计模式-状态模式(25)
    设计模式-访问者模式(24)
    设计模式-观察者模式(22)
    设计模式-中介者模式(21)
    设计模式-行为型模式小结(20)
    设计模式-迭代器模式(19)
    Tomcat安装
    MySQL单表查询
    MySQL表操作
    MySQL表的完整性约束
  • 原文地址:https://www.cnblogs.com/moxiaotao/p/9432697.html
Copyright © 2011-2022 走看看