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实例注入合理的属性值。

  • 相关阅读:
    Problem: 八中上厕所
    Problem: 最短路上的统计
    股票买卖问题
    Redis(十二)——Redis为什么是单线程的?
    链表题汇总
    Redis(十一)——集群模式
    Redis(十)——哨兵模式
    Redis(九)——主从复制
    Redis(八)——客户端与服务器
    Redis(七)——事件
  • 原文地址:https://www.cnblogs.com/moxiaotao/p/9432697.html
Copyright © 2011-2022 走看看