<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Atea - Hero's Grave

    面向對象,開源,框架,敏捷,云計算,NoSQL,商業智能,編程思想。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      40 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
    Spring可以給定義的bean/beans設置init-method和destroy-method。

    helloworld.xml
    <!--default scope is singleton-->
    <bean id="bean1" class="my.Bean1"
      init-method
    ="init" destroy-method="destroy">
    </bean>
    <bean id="bean2" class="my.Bean2"
      init-method
    ="init" destroy-method="destroy">
    </bean>

    Bean1.
    java
    public class Bean1 {
        
    public Bean1() {
          System.out.println(
    "constructor Bean1");
        }    
        
    public void init(){
            System.out.println(
    "init Bean1");
        }    
        
    public void destroy(){
            System.out.println(
    "destroy Bean1");
        }      
    }

    Bean2.
    java
    public class Bean2 {
        
    public Bean1() {
          System.out.println(
    "constructor Bean2");
        }    
        
    public void init(){
            System.out.println(
    "init Bean2");
        }    
        
    public void destroy(){
            System.out.println(
    "destroy Bean2");
        }      


    test.java
    AbstractApplicationContext factory = new ClassPathXmlApplicationContext("helloworld.xml"); 
    //如果是非web app環境,需要設置手動關閉IoC容器(shutdown hook)后才能執行destroy-method。
    factory.registerShutdownHook();        
    System.out.println(
    "begin!");
    Bean1 b1 
    = (Bean1) factory.getBean("bean1");
    Bean2 b2 
    = (Bean2) factory.getBean("bean2");
    System.out.println(
    "end!");

    輸出:
    constructor Bean1
    init Bean1
    constructor Bean2
    init Bean2
    begin!
    end!
    destroy Bean2
    destroy Bean1
    可以看出如果bean的scope是singleton,只會在Ico容器創建的時候被創建1次。
    PS: bean初始化順序和銷毀順序相反。

    那么如果改變scope的話:
    <bean id="bean1" class="my.Bean1" scope="prototype"
      init-method
    ="init" destroy-method="destroy">
    </bean>
    <bean id="bean2" class="my.Bean2"
      init-method
    ="init" destroy-method="destroy">
    </bean>

    輸出:
    constructor Bean2
    init Bean2
    begin!
    constructor Bean1
    init Bean1
    end!
    destroy Bean2

    當IoC容器創建時,prototype的bean不再被創建了。
    之后對于每次bean的請求都會創建新的對象,但任何時候都不會執行destroy-method!

    注意:
    1. 如果bean被aop監聽的話(aop:pointcut),bean的init-method是不會執行的(構造函數會執行)。
    2. 如果bean是其他bean的field(ref bean),init-method和構造函數都會執行。
    posted on 2008-09-19 15:48 Atea 閱讀(570) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 女人毛片a级大学毛片免费| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲日韩欧洲乱码AV夜夜摸| 日日摸日日碰夜夜爽亚洲| 午夜时刻免费入口| 中国china体内裑精亚洲日本| 国产麻豆视频免费观看| 亚洲videosbestsex日本| 最近免费中文字幕大全视频| 亚洲AV无码国产精品色| 成人毛片免费观看视频大全| 亚洲日韩精品无码专区加勒比☆| 免费人成网站在线观看10分钟| 亚洲国产激情在线一区| 免费观看的a级毛片的网站| 亚洲熟女综合色一区二区三区| 破了亲妺妺的处免费视频国产| 国产亚洲男人的天堂在线观看| 全黄a免费一级毛片人人爱| jizz免费观看| 久久久久久亚洲精品中文字幕| 曰批全过程免费视频播放网站| 亚洲精品亚洲人成在线播放| 日韩电影免费在线观看视频| 男人和女人高潮免费网站| 亚洲日韩精品无码专区网址 | 中文字幕免费在线看电影大全 | 亚洲熟女精品中文字幕| 免费吃奶摸下激烈视频| 天黑黑影院在线观看视频高清免费| 中文字幕亚洲免费无线观看日本 | 亚洲综合激情五月丁香六月| 大胆亚洲人体视频| 日本免费在线观看| 精品亚洲456在线播放| www.亚洲精品.com| 999久久久免费精品播放 | 国产激情久久久久影院老熟女免费| 久久水蜜桃亚洲av无码精品麻豆| 四虎影视大全免费入口| 最近免费字幕中文大全|