<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
    主站蜘蛛池模板: 亚洲国产精品成人精品无码区在线| 好看的亚洲黄色经典| 久久精品国产亚洲av麻豆图片 | 91黑丝国产线观看免费| 亚洲日本一区二区| 51视频精品全部免费最新| 97久久精品亚洲中文字幕无码| 精品视频在线免费观看| 亚洲av色影在线| AV大片在线无码永久免费| 亚洲欧洲日本在线观看| 午夜老司机免费视频| 猫咪www免费人成网站| 亚洲麻豆精品国偷自产在线91| 国产真人无码作爱免费视频| 亚洲成AV人片在线观看无| 69视频在线是免费观看| 中文字幕在线观看亚洲视频| 国产精品公开免费视频| ssswww日本免费网站片| 久久久久亚洲AV成人无码| 黄色网址免费大全| 日韩亚洲人成在线综合| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲&#228;v永久无码精品天堂久久| 亚洲综合网站色欲色欲| 日本人成在线视频免费播放| 亚洲精品欧洲精品| 日韩毛片无码永久免费看| 岛国精品一区免费视频在线观看 | av网站免费线看| 久久91亚洲精品中文字幕| 免费黄色小视频网站| 中文在线免费视频| www.亚洲日本| 在线观看亚洲av每日更新| 青苹果乐园免费高清在线| 一区二区三区免费电影| 亚洲免费人成视频观看| 久久久青草青青国产亚洲免观| 国产电影午夜成年免费视频|