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

猜你喜欢

转载自www.cnblogs.com/moxiaotao/p/9432697.html