<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
    主站蜘蛛池模板: 亚洲国产精品久久久久| 中文字幕专区在线亚洲| 亚洲一区二区三区免费视频| 6080午夜一级毛片免费看 | 国内精品久久久久影院免费| 在线观看亚洲成人| 99视频在线免费观看| 亚洲国产精品福利片在线观看| 色www永久免费网站| 亚洲av一综合av一区| 久久国产乱子伦精品免费看| 亚洲精品国产成人99久久| 67194成手机免费观看| 2017亚洲男人天堂一| 国产精品免费电影| a级毛片免费高清视频| 三上悠亚亚洲一区高清| 久久久久久AV无码免费网站 | 在线看片人成视频免费无遮挡| 亚洲另类无码专区首页| 婷婷综合缴情亚洲狠狠尤物| 久久一区二区免费播放| 亚洲AV日韩精品久久久久| 国产一卡2卡3卡4卡2021免费观看| 亚洲小说图区综合在线| 亚洲国产精品尤物yw在线| 国色精品va在线观看免费视频 | 国产一级做a爱免费视频| jizz日本免费| 久久久久亚洲av无码专区导航 | 免费无码黄十八禁网站在线观看| 校园亚洲春色另类小说合集| 亚洲一区二区三区无码中文字幕| 最近的中文字幕大全免费8| 亚洲狠狠婷婷综合久久蜜芽| 亚洲无线码在线一区观看| 美女裸身网站免费看免费网站| 青娱乐在线免费观看视频| 久久久亚洲AV波多野结衣| 免费一级做a爰片久久毛片潮喷| 永久免费av无码入口国语片|