Spring框架IOC容器底層原理詳解
1、什么是IOC
IOC – Inverse of Control,控制反轉,將對象的創(chuàng)建權力反轉給Spring框架!
在java當中一個類想要使用另一個類的方法,就必須在這個類當中創(chuàng)建這個類的對象,那么可能會出現(xiàn)如下情況, 比如A類當中創(chuàng)建著B對象,B類當中有C對象,C類當中有A對象,這個如果一個類出了問題,那么可能會導致這個框架出現(xiàn)問題。 Spring 將創(chuàng)建對象的權利給了IOC,在IOC當中創(chuàng)建了ABC三個對象嗎,那么我們我們其他的類只需要調用集合, 大大的解決了程序耦合性的問題。
控制反轉(Inversion of Control,縮寫為IoC),是面向對象編程中的一種設計原則,可以用來減低計算機代碼之間的耦合度。
解決問題:使用IOC可以解決程序耦合性高的問題。
2、IOC容器的底層原理
IOC的實現(xiàn),依賴于以下3門技術
① dom4j解析xml文檔;
② 工廠模式;
③ 采用反射設計模式創(chuàng)建對象
首先我們需要講一下什么是工廠模式

在當前情況之下A類想要調用B類就必須自己在自己的內部新建B類的對象,這樣的耦合度太高,那我們如何降低耦合度的呢?

創(chuàng)建一個工廠類,這樣就能夠使得A和B的耦合度降低到最小值
3、那么上邊提到的三種技術如何實現(xiàn)IOC的呢
第一步:xml配置文件,配置創(chuàng)建對象
<bean id="demo" class="com.qcby.service.Demo" />
第二步:創(chuàng)建工廠類(ioc的核心原理)
public class DemoFactory {
//利用dom4j得到name所對應的value值
public static Demo getDemo() throws Exception {
//利用dom4j得到name所對應的value值
String value="class路徑";
//通過反射創(chuàng)建對象
Class clazz = Class.forName(value);
//返回并創(chuàng)建demo對象
return (Demo) clazz.newInstance();
}
}4、IOC(接口)
1.IOC思想是基于IOC容器完成的,IOC的底層就是對象工廠
2.Spring里邊提供了IOC容器的實現(xiàn)的兩種方式
(1) BeanFactroy:IOC容器是Spring內部的使用接口,不提供給開發(fā)人員使用

BeanFactroy:加載配置文件的時候不會去創(chuàng)建對象,在使用對象的時候才會去創(chuàng)建對
(2)ApplicationContext:BeanFactory接口的子接口,提供了更多更強大的功能,一般由開發(fā)人員進行使用

到此這篇關于Spring框架IOC容器底層原理詳解的文章就介紹到這了,更多相關Spring IOC容器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
spring cloud zuul 與 sentinel的結合使用操作
這篇文章主要介紹了spring cloud zuul 與 sentinel 的結合使用操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot啟動流程SpringApplication準備階段源碼分析
這篇文章主要為大家介紹了SpringBoot啟動流程SpringApplication準備階段源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
java 定義長度為0的數(shù)組/空數(shù)組案例
這篇文章主要介紹了java 定義長度為0的數(shù)組/空數(shù)組案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解
這篇文章主要介紹了SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解,ApplicationListener是應用程序的事件監(jiān)聽器,繼承自java.util.EventListener標準接口,采用觀察者設計模式,需要的朋友可以參考下2023-11-11
Idea設置spring boot應用配置參數(shù)的兩種方式
本文通過兩個方式介紹Idea設置spring boot應用配置參數(shù),一種是配置VM options的參數(shù)時要以:-DparamName的格式設置參數(shù),第二種可以參考下本文詳細設置,感興趣的朋友跟隨小編一起看看吧2023-11-11

