Spring框架IOC容器底層原理詳解
1、什麼是IOC
IOC – Inverse of Control,控制反轉,將對象的創建權力反轉給Spring框架!
在java當中一個類想要使用另一個類的方法,就必須在這個類當中創建這個類的對象,那麼可能會出現如下情況, 比如A類當中創建著B對象,B類當中有C對象,C類當中有A對象,這個如果一個類出瞭問題,那麼可能會導致這個框架出現問題。 Spring 將創建對象的權利給瞭IOC,在IOC當中創建瞭ABC三個對象嗎,那麼我們我們其他的類隻需要調用集合, 大大的解決瞭程序耦合性的問題。
控制反轉(Inversion of Control,縮寫為IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。
解決問題:使用IOC可以解決程序耦合性高的問題。
2、IOC容器的底層原理
IOC的實現,依賴於以下3門技術
① dom4j解析xml文檔;
② 工廠模式;
③ 采用反射設計模式創建對象
首先我們需要講一下什麼是工廠模式
在當前情況之下A類想要調用B類就必須自己在自己的內部新建B類的對象,這樣的耦合度太高,那我們如何降低耦合度的呢?
創建一個工廠類,這樣就能夠使得A和B的耦合度降低到最小值
3、那麼上邊提到的三種技術如何實現IOC的呢
第一步:xml配置文件,配置創建對象
<bean id="demo" class="com.qcby.service.Demo" />
第二步:創建工廠類(ioc的核心原理)
public class DemoFactory { //利用dom4j得到name所對應的value值 public static Demo getDemo() throws Exception { //利用dom4j得到name所對應的value值 String value="class路徑"; //通過反射創建對象 Class clazz = Class.forName(value); //返回並創建demo對象 return (Demo) clazz.newInstance(); } }
4、IOC(接口)
1.IOC思想是基於IOC容器完成的,IOC的底層就是對象工廠
2.Spring裡邊提供瞭IOC容器的實現的兩種方式
(1) BeanFactroy:IOC容器是Spring內部的使用接口,不提供給開發人員使用
BeanFactroy:加載配置文件的時候不會去創建對象,在使用對象的時候才會去創建對
(2)ApplicationContext:BeanFactory接口的子接口,提供瞭更多更強大的功能,一般由開發人員進行使用
到此這篇關於Spring框架IOC容器底層原理詳解的文章就介紹到這瞭,更多相關Spring IOC容器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 深入瞭解Spring控制反轉IOC原理
- 獲取Spring的上下文環境ApplicationContext的最簡單方式
- 新手瞭解java 反射基礎知識
- SpringBoot中的main方法註入service
- Java基礎篇之反射機制詳解