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

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

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

    隨筆-42  評論-349  文章-4  trackbacks-0
     

            1、初始化回調接口InitializingBean   要對某個受管Bean進行預處理里時,可以實現Spring定義的初始化回調接口InitializingBean,它定義了一個方法如下:

    1 void afterPropertiesSet() throws Exception
          開發者可以在受管Bean中實現該接口,再在此方法中對受管Bean進行預處理。

    注意:應該盡量避免使用這種方法,因為這種方法會將代碼與Spring耦合起來。推薦使用下面的使用init-method方法。

    2、析構回調接口DisposableBean    同上面一樣,要對受管Bean進行后處理,該Bean可以實現析構回調接口DisposableBean,它定義的方法如下:

    1 void destroy() throws Exception
     

    為了降低與Spring的耦合度,這種方法也不推薦。

    下面的例子(例程3.6)簡要的展示如何使用這兩個接口。

    新建Java工程,名字為IoC_Test3.6,為其添加Spring開發能力后,新建一ioc.test包,添加一個Animal類,該類實現InitializingBean接口和DisposableBean接口,再為其添加nameage成員,GeterSeter方法,speak方法。完成后代碼如下:

     1 package ioc.test;
     2 
     3 import org.springframework.beans.factory.DisposableBean;
     4 import org.springframework.beans.factory.InitializingBean;
     5 
     6 public class Animal implements InitializingBean, DisposableBean {
     7 
     8     private String name;
     9     private int age;
    10 
    11     public String speak(){
    12         return "我的名字:"+this.name+"我的年齡:"+this.age;
    13     }
    14 
    15     public void afterPropertiesSet() throws Exception {
    16         System.out.println("初始化接口afterPropertiesSet()方法正在運行!");
    17     }
    18 
    19     public void destroy() throws Exception {
    20         System.out.println("析構接口destroy()方法正在運行!");
    21     }
    22 
    23 //Geter和Seter省略
    24 
    25 }
    26 

    在配置文件中配置受管Bean,代碼如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans
     3     xmlns="http://www.springframework.org/schema/beans"
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5 
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
     7     <bean id="animal" class="ioc.test.Animal">
     8 
     9       <property name="age"  value="5"></property>
    10       <property name="name" value="豬"></property>
    11 
    12     </bean>
    13 
    14 </beans>
    15 

    新建含有主方法的TestMain類,添加測試代碼,如下:
     1 package ioc.test;
     2 
     3 import org.springframework.context.support.AbstractApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 public class TestMain {
     7 
     8     public static void main(String[] args) {
     9 
    10         AbstractApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    11         //注冊容器關閉鉤子,才能關掉容器,調用析構方法
    12         ac.registerShutdownHook();
    13         Animal animal = (Animal)ac.getBean("animal");
    14         System.out.println(animal.speak());    
    15     
    16     }    
    17 }
    18 
     

    運行工程,結果如下:

     

    以看到,Spring IoC容器自動的調用了兩個接口的相關方法對bean進行了預處理和后處理。

    注意:由于后處理是在Bean被銷毀之前調用,所有要在MyEclipse中看到后處理方法的輸出,必須先注冊容器的關閉鉤子,在主方法退出時關掉容器,這樣其管理的Bean就會被銷毀。當然也可以直接調用容器的close方法來顯示的關閉容器。


    By:殘夢追月
    posted on 2008-07-28 14:24 殘夢追月 閱讀(1473) 評論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 国产精品偷伦视频免费观看了| 九九九国产精品成人免费视频| 成人超污免费网站在线看| 国产亚洲蜜芽精品久久| 亚洲精品国产美女久久久| 国产四虎免费精品视频| 美女视频黄视大全视频免费的| 亚洲av无码一区二区三区不卡| 日韩精品成人无码专区免费| 丰满妇女做a级毛片免费观看| 亚洲视频一区二区三区| 免费一级毛片在线观看| 69视频免费观看l| 一区二区三区视频免费| 亚洲日本视频在线观看| 国产成人精品曰本亚洲79ren| 91大神在线免费观看| 成年网在线观看免费观看网址| 亚洲日韩乱码中文无码蜜桃| 亚洲成a人片在线播放| 免费在线视频你懂的| 一级全免费视频播放| 久久久久久亚洲精品影院| 亚洲AV综合色区无码一区爱AV| 国产片免费福利片永久| 18成禁人视频免费网站| 国产精品高清免费网站| 亚洲日韩国产一区二区三区在线| 亚洲国产精品一区第二页| 日韩免费在线观看| 成人免费激情视频| 美女在线视频观看影院免费天天看 | 国产高清视频在线免费观看| 88av免费观看| 国精产品一区一区三区免费视频| 久久亚洲精品无码av| 亚洲人xxx日本人18| 亚洲精品中文字幕乱码影院| 永久亚洲成a人片777777| 国产婷婷高清在线观看免费| 久久成人国产精品免费软件|