天天看點

淺讀spring 源碼

spring的IOC容器

ioc運作過程可概括為5步:

1.定位,定位完成後,可得到encodeResouce ,找到路徑。(定位xml檔案)

2.加載,通過parseDefaultElement加載解析XML檔案中的(import,beans,bean,alice等),通過doLoadBeanDefinitions得到BeanDefined。

3.注冊,通過registerBeanDefinition對bean進行注冊,在注冊過程中保證線程同步。此時會産生BeanDefintion。此時還未産生Bean。

4.建立執行個體,Bean會通過DI(依賴注入)産生。建立是會擷取BeanDefintion資訊,并擷取其依賴關系,然後調用Factory的createBean()方法。createBean()時調用cteatebeanInstance(),使用JDK代理或CGLIB代理,掌握控制權。

5.注入,通過populatBean進行bean 的注入和類型轉換,把bean放入ioc容器(FactoryBeanObjectCache)

IOC容器實際上是一個ConcurrentMap。