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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM