基本
spring的愿景
與java ee的比較
主要作者:Rod Johnson
源碼版本: 3.0
源碼環(huán)境搭建
spring 源碼組織結(jié)構(gòu)
瞭望一下這片生機(jī)勃勃而又有些神秘的代碼叢林,就像探險者面對茂密的熱帶雨林那樣搞挣,一起做個深呼吸差牛,準(zhǔn)備開始這充滿樂趣和挑戰(zhàn)的Spring源代碼之旅
IoC容器和AOP是Spring的核心,是Spring系統(tǒng)中其他組件模塊和應(yīng)用開發(fā)的基礎(chǔ)
第二章 spring ioc容器
控制反轉(zhuǎn) VS 依賴注入
依賴對象的引用由具體Bean管理 =====》由容器代為管理
把控制權(quán)從具體Bean的手中轉(zhuǎn)交給容器控制=====》解決面向?qū)ο笙到y(tǒng)涉及復(fù)雜性和提交面向?qū)ο笙到y(tǒng)可測試性的有效解決方案
spring是一個Ioc(Inversion of control)容器
BeanFactory 定義了ioc容器最基本功能的接口
BeanDefinition
定義了ioc容器各個bean對象的依賴關(guān)系
IoC容器是用來管理對象依賴關(guān)系的钾唬,對IoC容器來說万哪,BeanDefinition就是對依賴反轉(zhuǎn)模式中管理的對象依賴關(guān)系的數(shù)據(jù)抽象,也是容器實現(xiàn)依賴反轉(zhuǎn)功能的核心數(shù)據(jù)結(jié)構(gòu)抡秆,依賴反轉(zhuǎn)功能都是圍繞對這個BeanDefinition的處理上完成的奕巍。
2.2 IoC容器系列的實現(xiàn):BeanFactory和ApplicationContext
各種具體類,比如DefaultListableBeanFactory儒士、XmlBeanFactory的止、ApplicationContext等都可以看成是容器的附加了某種功能的具體實現(xiàn),也就是容器體系中的具體容器產(chǎn)品着撩。
FactoryBean vs BeanFactory
后者就是上面提到的ioc容器接口
而前者是一個bean,只不過是一種特殊的bean,能夠生成bean對象的工廠bean,類似于設(shè)計模式的工廠模式
引用方式區(qū)別:用戶使用容器時诅福,可以使用轉(zhuǎn)義符“&”來得到FactoryBean本身匾委,用來區(qū)分通過容器來獲取FactoryBean產(chǎn)生的對象和獲取FactoryBean本身。舉例來說氓润,如果myJndiObject是一個FactoryBean剩檀,那么使用&myJndiObject得到的是FactoryBean,而不是myJndiObject這個FactoryBean產(chǎn)生出來的對象旺芽。
參看源碼BeanFactory的屬性
String FACTORY_BEAN_PREFIX = "&";
BeanFactory接口定義如下
TODO:缺一張截圖中
閱讀BeanFactory接口源代碼可以了解如下有用信息
TODO:
0.同一個ioc容器中bean名稱唯一沪猴。(這個很明確啦)
1.單例Bean和單例模式有所區(qū)別,單例Bean是指在ioc容器單例采章,也即可能在父容器中存在相同bean名稱的bean运嗜。
2.定義了bean初始化和注銷的標(biāo)準(zhǔn)生命周期過程和順序。