從總體到區域
總
控制反轉:理論思想,原來的物件是由使用者來進行控制,有了spring之后,可以把整個物件交給spring來幫我們進行管理
DI(依賴注入):把對應的屬性的值注入到具體的物件中,@Autowired,populateBean完成屬性值的注入
容器:存盤物件,使用map結構來存盤,在spring中一般存在三級快取,singletonObjects存放完整的bean物件,整個bean的生命周期,從創建到使用到銷毀的程序全部都是由容器來管理(bean的生命周期)
局 (可結合之前的筆記中spring中容器和物件的創建流程圖理解)
1、一般聊ioc容器的時候要涉及到容器的創建程序(beanFactory,DefaultListableBeanFactory),向bean工廠中設定一些引數(BeanPostProcessor,Aware介面的子類)等等屬性
2、加載決議bean物件,準備要創建的bean物件的定義物件beanDefinition,(xml或者注解的決議程序)
3、beanFactoryPostProcessor的處理,此處是擴展點,PlaceHolderConfigurSupport,ConfigurationClassPostProcessor
4、BeanPostProcessor的注冊功能,方便后續對bean物件完成具體的擴展功能
5、通過反射的方式講BeanDefinition物件實體化成具體的bean物件,
6、bean物件的初始化程序(填充屬性,呼叫aware子類的方法,呼叫BeanPostProcessor前置處理方法,呼叫init-mehtod方法,呼叫BeanPostProcessor的后置處理方法)
7、生成完整的bean物件,通過getBean方法可以直接獲取
8、銷毀程序
自己的理解和了解過的實作程序
反射、工廠,關鍵的幾個方法
createBeanFactory、getBean、doGetBean、createBeanInstance(getDeclaredConstructor, newInstance)、populateBean、initializingBean
1、先通過createBeanFactory創建出一個Bean工廠(DefaultListableBeanFactory)
2、開始回圈創建物件,因為容器中的bean默認都是單例的,所以優先通過getBean,doGetBean從容器中查找,找不到的話,
3、通過createBean,doCreateBean方法,以反射的方式創建物件,一般情況下使用的是無參的構造方法(getDeclaredConstructor,
newInstance)
4、進行物件的屬性填充populateBean
5、進行其他的初始化操作(initializingBean)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417062.html
標籤:其他
上一篇:Python 實作圖片裁剪(附代碼) | Python工具
下一篇:spring中Bean的生命周期
