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。