spring 兩大核心
1.ioc 控制反轉
概念: 控制權由對下本身轉向容器,由容器根據配置文件去創(chuàng)建實例并創(chuàng)建各個實例之間的? ? ? ? ? ? ? 依賴關系。
核心:bean工廠在spring中贯涎,bean工廠創(chuàng)建各個實例
2. AOP 面向切面編程
? ? ? ? 代理的兩種方式
? ? ? ? ? 靜態(tài)代理: 針對每個具體類分別編寫代理類。
? ? ? ? ? ? ? ? ? ? ? ? ? 針對一個接口編寫一個代理類
? ? ? ? ? 動態(tài)代理:針對一個方面編寫一個invocationHandler然后借用JDK反射包中的proxy類為接口動態(tài)生成相應的代理類
spring 的一切都是反射崎坊, 反射比直接調用處理速度慢宿百,
spring的注入方式 有以下三種
setter 對于習慣了傳統 javabean 開發(fā)的程序員,通過 setter 方法設定依賴關系更加直觀腔寡。
如果依賴關系較為復雜焚鲜,那么構造子注入模式的構造函數也會相當龐大,而此時設值注入模式則更為簡潔放前。
如果用到了第三方類庫恃泪,可能要求我們的組件提供一個默認的構造函數,此時構造子注入模式也不適用犀斋。
inteface接口注入模式因為歷史較為悠久贝乎,在很多容器中都已經得到應用。但由于其在靈活性叽粹、易用性上不如其他兩種注入模式览效,因而在IOC的專題世界內并不被看好。
constructor在構造期間完成一個完整的虫几、合法的對象锤灿。
所有依賴關系在構造函數中集中呈現。
依賴關系在構造時由容器一次性設定辆脸,組件被創(chuàng)建之后一直處于相對“不變”的穩(wěn)定狀態(tài)但校。
只有組件的創(chuàng)建者關心其內部依賴關系,對調用者而言啡氢,該依賴關系處于“黑盒”之中状囱。
spring的核心接口及核心配置文件
1.BeanFactory最基礎最核心的接口
重要的實現類有:
XmlBeanFactory,以及ApplicationContext接口下的類
2.Resource接口,可以通用地訪問文件資源
1)ClassPathResource:讀取得形式為"classpath:ApplicationContext.xml"
2)FileStstemResource:讀取得形式為"file:c:\spring\src\ApplicationContext.xml"
3)ServletContextResource:讀取得形式為"WEB-INF\ApplicationContext.xml"
//ResourceLoader類用于載入Resource
3.FactoryBean工廠bean
它本身在bean factory中定義,同時又是用于創(chuàng)建目標bean的工廠
spring有以下實現:
1)JndiObjectFactoryBean:通過JNDI查找獲取對象
2)LocalSessionFactoryBean:用于在本地裝配Hibernate SessionFactory
3)LocalSessionFactoryBean:用于在本地裝配JDO PersistenceManagerFactory
4)ProxyFactoryBean:用于獲取AOP的代理
5)TransactionProxyFactoryBean:用于為對象創(chuàng)建事務代理倘是,用于實現簡捷易用的聲明性事務代理
6)RmiProxyFactoryBean:為通過RMI訪問的遠程對象創(chuàng)建一個代理
4.ApplicationContext加強了BeanFactory的功能亭枷,支持以下功能
1)國際化支持
2)資源訪問
3)事件監(jiān)聽機制
它的重要的實現類有:
FileSystemXmlApplicationContext,ClassPathXmlApplication,XmlWebApplicationContext
5.Bean生命周期的回調接口
BeanFactoryPostProcessor,InitializingBean,DisposableBean,BeanFactoryAware,ApplicationContextAware,ResourceLoader,BeanPostProcessor
6.MessageSource接口
它的實現類有ResourceBundleMessageSource,ReloadableResourceBundleMessageSource.后者在屬性文件修改后會重新載入