[轉]Java Spring的Ioc控制反轉Java反射原理


轉自:http://www.kokojia.com/article/12598.html

學習一個東西的時候,如果想弄明白,最好想想框架內部是如何實現的,如果是我做我會怎么實現。下面我就寫一個Ioc DI的程序。Spring就相當於一個Bean工廠,你寫好自己的bean,輸入配置文件,Spring就可以幫你自動生成bean對象。下面我們創建一個java工程SimulateIoc 我們先寫二個Bean。內容都一樣,只是類名不一樣。定義一個Spring配置文件,我們起名字叫IocConfig.xml。下面我們來看一下TestIoc.Java文件。看一下運行結果:

 

通過這個文件我們可以看出,我們先創建了一個BeanFactory工廠,然后通過getBean方法獲得指定的Bean對象。是不是很神奇,只要通過不同的名字,我們就可以獲得我們想要的對象。BeanFactory里面到底做了什么那?這就是整個BeanFactory實現了。里面很多都是處理xml的部分,我們主要看上面的兩個標紅的地方。

  Class bean = Class.forName(cls.getText());

  Object obj = bean.newInstance();

  Class.forName獲得指定類的類類。newInstance()獲得指定類的對象。

  Method entryPoint = bean.getMethod(attributename, String.class);

  entryPoint.invoke(obj,value);

  getMethod獲得指定方法的方法調用入口。然后調用invoke就會執行方法。

  如果想深入了解上面四句。可以看看Class文件的反射機制。或者看我的另外一篇文章。

  以上Ioc DI實現過程非常簡單,並沒有考慮太多干擾因素和功能。所以和Spring實現不一樣,但是原理都是一樣的。


免責聲明!

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



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