spring學習之IOC

一.概念

ioc :inversion of control控制反轉,控制反轉的意思是,之前我們的思路都是創建對象的時候,由我們自己主動去new對象,而ioc就是將new 對象的任務交給了ioc容器,我們只需要告訴ioc容器我們需要的對象,然後ioc提供給我們

而di dependcy,依賴注入,就是ioc容器創建業務所需要的類並交給我們;

 二.原理

https://blog.csdn.net/lisongjia123/article/details/52129340  

https://blog.csdn.net/qq_27888773/article/details/77770519

1.創建Ioc配置文件的抽象資源,這個抽象資源包含了BeanDefinition的定義信息
    2.創建一個BeanFactory,這裏使用了DefaultListableBeanFactory
    3.創建一個載入BeanDefinition的讀取器,這裏使用XmlBeanDefinitionReader來載入XML文件形式的BeanDefinition
    4.然後將上面定位好的Resource,通過一個回調配置給BeanFactory
    5.從定位好的資源位置讀入配置信息,具體的解析過程由XmlBeanDefinitionReader完成
    6.完成整個載入和註冊Bean定義之後,需要的Ioc容器就初步建立起來了
 最終封裝成,BeanDefinition,並且放在BeanFacatory中,有map來管理;

實例化的過程,也就依賴注入是spring底層通過getbean爲入口,底層Spring當中提供了兩種實例化方案: BeanUtils 和 Cglib 方式。BeanUtils實現機制是通過Java的反射機制,Cglib是一個第三方類庫採用的是一種字節碼加強方式機制。 Spring中採用的默認實例化策略是Cglib。 

另外,實例化之後,依賴注入,利用的setPropertyValue()方法;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章