熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Spring容器對Bean組件的管理

2013-11-12 23:38:08  來源: Java開源技術 

  Bean對象創建時機默認是隨容器創建通過lazyinit可以改變對象實例化時機
    (a)默認lazyinit=default||false:
    當spring容器實例化的時候並把
    容器中對象全部完成實例化
    <bean id=bean class=comtarenaentityBean  lazyinit=false/>
    (b)lazyinit=true
    當從spring容器中獲取對象時候在對對象
    實例始化
    (c)設置全局defaultlazyinit=true
    整個配置文件中對象都實例化延遲
    <beans  …
    defaultlazyinit=true>
    </beans>
    注意在使用定時器的時候不能使用lazyinit=true
Bean對象的創建模式
    singleton:spring容器對象默認是單例模式每次只成一個實例
    <bean id= class= scope=singleton/>      struts:
    prototype:多例spring容器會每次都為對象產生一個新實例
    <bean id= class= scope=prototype/>         struts:
    scope:在web開發中使用requestsession
    回顧
    會話與服務器端多次請求和響應過程
    pageContext:當前頁面
    session:一次會話
    request:一次請求
    application:整個應用服務器
    測試類
    [java]
    public class Bean {
    public void show(){
    Systemoutprintln(我是一個豆子
    }
    public Bean() {
    Systemoutprintln(我出生了
    }
    public static void main(String[] args) {
    ApplicationContext ac = new
    FileSystemXmlApplicationContext(classpath:applicationContextxml
    Bean bean = (Bean)acgetBean(bean
    Bean bean = (Bean)acgetBean(bean
    if(bean == bean){
    Systemoutprintln(單例
    }else{
    Systemoutprintln(多例
    }
    }
    }
    當配置文件中<bean id=bean class=comtarenaentityBean/>
運行結果
    我出生了
    單例
    當配置文件中<bean id=bean class=comtarenaentityBean  scope=prototype/>
    運行結果
    我出生了
    我出生了
    多例

  Bean對象初始化和銷毀
    (a)在spring配置文件定義銷毀方法和初始化方法
    <bean initmethod=init destroymethod=destroy>
    (b)在Bean 對象中定義銷毀方法和初始化方法
    public void init(){}
    public void destroy(){}
    (c)spring容器自動調用銷毀方法和初始化方法
    注意銷毀方法在spring容器銷毀才去調用
    AbstractApplicationContext提供銷毀容器方法
    close()//銷毀容器
    Bean對象時多例不支持destroy(){}銷毀
    scope=prototype
    測試類
    [java]
    public class Bean {
    public void show(){
    Systemoutprintln(我是一個豆子
    }
    public Bean() {
    Systemoutprintln(我出生了
    }
    //定義初始化方法
    public void init(){
    Systemoutprintln(執行init方法
    }
    public void destroy(){
    Systemoutprintln(執行destroy
    }
    public static void main(String[] args) {
    AbstractApplicationContext ac = new
    FileSystemXmlApplicationContext(classpath:applicationContextxml
    Bean bean = (Bean)acgetBean(bean
    beanshow()
    acclose()
    }
    } 
    當配置文件中<bean id=bean class=comtarenaentityBean initmethod=init destroymethod=destroy />
運行結果
    我出生了
    執行init方法
    我是一個豆子
    執行destroy
    當配置文件中<bean id=bean class=comtarenaentityBean initmethod=init destroymethod=destroy scope=prototype/>
    運行結果
    我出生了
    執行init方法
    我是一個豆子


From:http://tw.wingwit.com/Article/program/Java/ky/201311/11162.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.