Spring 4bean的裝配

1 默認裝配方式
調用bean類的無參構造,創建空值實例對象,故一般bean類寫有參構造時需要寫一個無參構造

2 動態工廠Bean
工廠類裏方法返回bean

3 靜態工廠Bean
方法用static修飾

4 bean的作用域
scope=“singleton”單例模式(默認,初始化時創建bean)
scope=“prototype”原型模式(使用時創建bean)
web應用中:
request:每次http請求產生一個bean
session:
global session:每個全局的http session產生一個bean,僅在集羣中不同於session,多個web應用共享一個session。

5 Bean後處理器
一種特殊的bean
需要自定義類實現接口BeanPostProcessor,該接口中包含兩個方法分別在bean初始化完畢之前與之後執行(類似攔截器),返回功能變動後bean對象
l類似攔截器,在bean初始化前後做什麼
方法一:postProcessBeforeInitialization
方法二:postProcessAfterInitialization

Proxy代理進行增強bean,處理返回bean

6 定製bean的生命始末
init-method = “”
destroy-method = “”

關閉容器才能看到銷燬,ApplicationContext接口容器沒有關閉方法,
但其實現類ClassPathXmlApplicationContext有
銷燬方法的執行條件:bean需要是singleton的;手工關閉容器close

7 bean的生命週期

 (1)調用無參構造器,創建實例對象(構造方法)
 (2)調用參數的setter,爲屬性注入值(屬性<property>)
 (3)若bean實現了BeanNameAware接口,則會執行接口方法setBeanName(String beanId),使Bean類可以獲取其在容器中的id的名稱
 (4)若Bean實現了BeanFactoryAware接口,則執行接口方法setBeanFactory(BeanFactory factory),使Bean類可以獲取到BeanFactory對象
 (5)若定義並註冊了bean後處理器beanPostProcessor,則執行接口方法postProcessBeforeInitialization.
 (6)若Bean實現了InitializingBean接口,則執行接口方法afterPropertiesSet()。該方法在Bean的所有屬性的set方法執行完畢後執行,是bean初始化結束的標誌,即bean實例化結束
 (7)若設置了init-method方法,則執行。
 (8)若定義並註冊了bean後處理器beanPostProcessor,則執行接口方法postProcessAfterInitialization
 (9)執行業務方法
 (10)若bean實現了DisposableBean接口,則執行接口方法destroy
 (11)若設置了destroy-method方法,則執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章