<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毛片久久| 妞干网在线免费视频| 亚洲精品成人网站在线观看| 老外毛片免费视频播放| 日本免费观看网站| 国产精品久久久久久亚洲小说| 午夜老司机免费视频| 曰批全过程免费视频免费看 | 亚洲午夜电影在线观看| 69视频免费在线观看| 亚洲大香人伊一本线| 成人A级毛片免费观看AV网站| 狠狠入ady亚洲精品| 亚洲精品国产成人影院| 99久久国产精品免费一区二区| 亚洲日本一区二区三区| 国产精品色拉拉免费看| 亚洲人成网站18禁止| 亚洲国产一区视频| 99在线观看精品免费99| 国产成+人+综合+亚洲专| 国产成人青青热久免费精品| 一级毛片不卡免费看老司机| 亚洲AV日韩精品久久久久久| 国产精品69白浆在线观看免费 | 波多野结衣免费视频观看| 亚洲视频在线免费| 亚洲精品偷拍无码不卡av| 国产免费直播在线观看视频| 国产一二三四区乱码免费| 亚洲成aⅴ人片在线影院八| 国产在线19禁免费观看| 国产拍拍拍无码视频免费| 国产精品亚洲午夜一区二区三区| 国产精品亚洲mnbav网站 | 亚洲综合男人的天堂色婷婷| 在线观着免费观看国产黄| 美女被cao网站免费看在线看| 亚洲国产最大av| 亚洲精品无码专区在线在线播放| 日韩欧美一区二区三区免费观看 |