spring實例化bean
實例化bean
通常情況下,class屬性通常是必須的(除了實例工廠方法創建bean和子bean的定義).大多數情況下,BeanFactory直接調用構造函數來"new"一個bean,class屬性確定bean實例的實現類.但這并不是創建bean的唯一方法.創建bean有如下三種方法:
- 調用構造器"new"一個bean實例.
- BeanFactory調用某個類的靜態工廠方法創建bean.
- BeanFactory調用實例工廠方法創建bean
<1>調用構造器"new"一個bean實例.的執行過程:
- 程序創建BeanFactory實例.
- 調用Chinese類的默認構造器創建默認實例.
- 根據配置文件注入依賴關系,先實例化依賴bean,然后將依賴bean注入。
- 返回一個完整的JavaBean實例。
<2>BeanFactory調用某個類的靜態工廠方法創建bean.
使用靜態工廠方法創建bean實例時,class屬性確定靜態工廠類,而不是該bean的類。spring需要知道哪個靜態工廠方法創建的bean實例,使用factory-method屬性來確定方法名。Spring調用工廠方法(也包含一組參數),并返回一個有效的對象。之后,bean實例的使用與采用其他方法創建的完全一樣。如果靜態工廠方法需要參數,使用<constructor-arg>元素傳入。
- class元素不再是bean的實現類,而是靜態工廠類;
- 必需有factory-method屬性確定產生實例的靜態工廠方法;
- 靜態工廠方法需要參數,則使用<constructor -arg>元素確定靜態工廠方法.
<3>調用實例工廠方法創建bean
通過實例工廠方法創建bean時,bean元素不能含有class屬性.因為BeanFactory不再直接實例化該bean,BeanFactory僅僅執行工廠的方法,工廠的方法返回bean實例.采用實例工廠方法創建bean應指定如下兩個屬性.
- 工廠bean的id,該id屬性應該對應spring容器中的一個bean
- 工廠方法名,該方法可產生bean實例.
- 與靜態工廠方法相似,如果需要在調用工廠方法時傳入參數,使用<constructor-arg>元素確定參數值
posted on 2007-04-09 10:33 肖麥 閱讀(1728) 評論(0) 編輯 收藏 所屬分類: Spring