主要內容
- IoC概述
- Java反射機制
- 資源訪問工具類
- BeanFactory和ApplicationContext的介紹
- Bean的生命周期
IOC概述
無間道依賴于劉德華,引入角色接口后,無間道依賴于劉建明這個角色,同時也依賴于劉德華,顯然不合理。
IOC注入類型
Java反射機制
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為java語言的反射機制。
JAVA反射(放射)機制:“程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言”。從這個觀點看,Perl,Python,Ruby是動態語言,C++,Java,C#不是動態語言。但是JAVA有著一個非常突出的動態相關機制:Reflection,用在Java身上指的是我們可以于運行時加載、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),并生成其對象實體、或對其fields設值、或喚起其methods。
Bean的生命周期
Bean的生命周期:
1,實例化bean
2,設置javaBean的屬性值
3,若該bean實現了BeanNameAware接口,則調用該接口的setBeanName()方法
4,若該bean實現了BeanFactoryAware接口,則調用該接口的setBeanFactory()方法
5, 若sping為所有javaBean配置了后處理器,即實現了BeanPostPorcessor接口的java類,并在配置文件中注冊為bean, 調用BeanPostProcessor接口的postProcessBeforeInitialization()方法
6,若bean實現了InitializingBean接口,則調用該接口的afterPropertiesSet()方法
7, 調用bean中自己定制的初始化方法:配置文件中配置init-method, 7和8的初始化方法是平級的,可共存,效果一樣,一般選其一即可
8,調用BeanPostPorcessor接口的postProcessAfterInitialization()方法 容器銷毀后,調用bean中定制的銷毀方法
9,若該bean實現了DisposableBean接口,調用其destroy()方法,
10,配置文件中指定自定義的銷毀方法:destroy-method , 9和10是兩種不同的銷毀方式,是平級的,可共存,效果一樣,一般選其一即可