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

          (殘夢追月原創(chuàng),轉載注明)

          在Windows編程中,我們常常需要處理各類事件,比如鼠標單擊事件、雙擊事件。在Spring中, ApplicationContext也有發(fā)布和監(jiān)聽時間的能力。我們知道,在windows開發(fā)中,如果要響應某個事件,我們只需要編寫相應windows消息的響應函數就可以了。比如鼠標單擊事件,相應的消息就是WM_LBUTTONDOWN 。在Spring中也是一樣,Spring中ApplicationEvent類及其子類就相當于Windows中的消息,事件監(jiān)聽器ApplcationListener的實現類就相當于Windows編程中的消息處理函數。

          要使用Spring事件處理機制,就必須先定義一個事件(定義一個Windows消息),發(fā)布出去后,再定義一個事件監(jiān)聽器(編寫消息處理函數),發(fā)布到容器中。這樣,當該事件發(fā)生后,我們就可以在事件監(jiān)聽器的onApplcationEvent()方法中處理我們的事件了。

          ApplicationEvent類是抽象類,不能被實例化,故Spring中的事件類都是其子類。我們要自定義一個事件就必須擴展該類,該類的代碼如下:

          如上所示,抽象類ApplicationEvent中timestamp字段存貯事件發(fā)生的時間,在該事件發(fā)生時(事件類被實例化),ApplicationEvent會自動的把當前的時間存儲到該字段中,在應用中可以通過getTimestamp()方法獲取該時間。如果應用要傳遞一個對象給監(jiān)聽器,那么可以把要傳遞的對象作為構造函數的參數source傳遞給ApplicationEvent類。

          為了監(jiān)聽事件的發(fā)生并處理事件,Spring提供了一個接口ApplicationListener,代碼如下:

          當有ApplicationEvent類的子類被發(fā)布到ApplicationContext時,如果已經在上下文中部署有實現了ApplicationListener接口的Bean,那么這個Bean會得到一個通知,方法onApplicationEvent()會被調用,并將該事件的實例作為參數傳入。與Windows消息處理函數不同的是,這個方法會響應所有的事件。因此在編寫onApplicationEvent()方法時,應當要先判斷當前的事件是否是我們要響應的事件。




          By:殘夢追月
          posted on 2008-07-24 16:39 殘夢追月 閱讀(3069) 評論(3)  編輯  收藏 所屬分類: Spring

          評論:
          # re: Spring中ApplicationContext的事件機制(一 ) 2008-07-25 15:50 | 龐永慶
          你好 我是出版社的編輯,我看到你博客中的內容,感覺寫的非常好。現在有一本SSH的書。如果想把這些內容和更多的人分享,可以和我聯系,把這些東西寫成書。
          我的郵箱:books_522008@yahoo.com.cn
          或者加我的MSN:pyq_19852008@hotmail.com  回復  更多評論
            
          # re: Spring中ApplicationContext的事件機制(一 ) 2008-07-25 19:51 | 殘夢追月
          @龐永慶
          具體我會聯系你的!  回復  更多評論
            
          # re: Spring中ApplicationContext的事件機制(一 ) 2014-01-25 11:38 | wxx
          學習了  回復  更多評論
            
          主站蜘蛛池模板: 汾阳市| 新化县| 玛纳斯县| 山丹县| 金坛市| 沈丘县| 阜城县| 静安区| 尤溪县| 全南县| 新巴尔虎左旗| 卢氏县| 松原市| 德钦县| 新宁县| 宁城县| 榆林市| 固阳县| 高要市| 榆社县| 南平市| 江孜县| 车险| 常山县| 榆中县| 灵武市| 柞水县| 甘孜| 布尔津县| 闻喜县| 贺兰县| 富源县| 镇康县| 景泰县| 汾阳市| 吉木乃县| 泸西县| 云梦县| 黑龙江省| 大丰市| 永善县|