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

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

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

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

    Spring筆記之四(Spring Event)

    Spring 中提供一些Aware相關的接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到的是ApplicationContextAware。實現ApplicationContextAware的Bean,在Bean被初始后,將會被注入 ApplicationContext的實例。ApplicationContextAware 提供了publishEvent()方法,實現Observer(觀察者)設計模式的事件傳播機 ,提供了針對Bean的事件傳播功能。通過Application.publishEvent方法,我們可以將事件通知系統內所有的ApplicationListener。

    Spring事件處理一般過程:

    定義Event類,繼承org.springframework.context.ApplicationEvent.

    編寫發布事件類Publisher,實現org.springframework.context.ApplicationContextAware接口.

    覆蓋方法 setApplicationContext ( ApplicationContext?applicationContext )和發布方法publish(Object obj)

    定義時間監聽類 EventListener,實現 ApplicationListener接口,實現方法 onApplicationEvent ( ApplicationEvent?event ).

    ?1?public?class?MessageEvent?extends ?ApplicationEvent?{
    ?2??????/**

    ?3? ?????*?
    ?4??????*/

    ?5?????private?static?final?long?serialVersionUID?=?1L ;
    ?6?????private
    ?String?msg;
    ?7?????????public
    ?MessageEvent(Object?source,?String?msg)?{
    ?8?????????????super
    (source);
    ?9?????????????this.msg?=
    ?msg;
    10?
    ????????}
    11?
    ????????
    12?????????public
    ?String?getMessage()?{
    13?????????????return
    ?msg;
    14?
    ????????}
    15?
    }




    ?1 ?public?class?Publisher?implements ?ApplicationContextAware?{
    ?2?

    ?3??????private ?ApplicationContext?ctx;
    ?4?

    ?5?????????public?void ?setApplicationContext(ApplicationContext?applicationContext)
    ?6?????????????????throws
    ?BeansException?{
    ?7?????????????this.ctx?=
    ?applicationContext;
    ?8?

    ?9? ????????}
    10?

    11?????????public?void ?publish(String?message)?{
    12?????????????ctx.publishEvent(new?MessageEvent(this
    ,?message));
    13?
    ????????}
    14?
    ????????
    15?????????public?static?void
    ?main(String[]?args)?{
    16?????????????ApplicationContext?ctx?=?new
    ?FileSystemXmlApplicationContext(
    17?????????????????????"src/applicationContext.xml"
    );
    18?

    19?????????????Publisher?pub?=?(Publisher)?ctx.getBean("publisher" );
    20?????????????pub.publish("Hello?World!"
    );
    21?????????????pub.publish("The?quick?brown?fox?jumped?over?the?lazy?dog"
    );
    22?
    ????????}
    23?

    24?}



    1?public?class?MessageEventListener?implements ?ApplicationListener?{
    2?

    3???????public?void ?onApplicationEvent(ApplicationEvent?event)?{
    4????????????if(event?instanceof
    ?MessageEvent)?{
    5????????????????MessageEvent?msgEvt?=
    ?(MessageEvent)event;
    6????????????????System.out.println("Received:?"?+
    ?msgEvt.getMessage());
    7?
    ???????????}
    8?
    ????????}
    9?}


    1?<beans>
    2?????<bean?id="publisher"?class="Publisher"/>
    3?????????<bean?id="messageEventListener"?class="MessageEventListener"/>
    4?</beans>


    在運行期,ApplicationContext會自動在當前的所有Bean中尋找ApplicationListener接口的實現,并將其作為事件接收對象。當Application.publishEvent方法調用時,所有的ApplicationListener接口實現都會被激發,每個ApplicationListener可根據事件的類型判斷是否是自己需要處理的事件,如上面的ActionListener只處理ActionEvent事件。



    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2007-09-24 22:38 poetguo 閱讀(5217) 評論(4)  編輯  收藏 所屬分類: Spring

    評論

    # re: Spring筆記之四(Spring Event) 2007-09-27 03:01 bayern

    這個例子的配置文件怎么寫??????  回復  更多評論   

    # re: Spring筆記之四(Spring Event) 2007-09-27 09:03 improviser

    <beans>
    <bean id="publisher" class="Publisher"/>
    <bean id="messageEventListener" class="MessageEventListener"/>
    </beans>  回復  更多評論   

    # re: Spring筆記之四(Spring Event) 2007-09-27 11:33 bayern

    多謝  回復  更多評論   

    # re: Spring筆記之四(Spring Event)[未登錄] 2012-08-28 14:28 a

    請問有多個listerner怎么定義呢?  回復  更多評論   

    主站蜘蛛池模板: 日本黄色免费观看| 免费无码一区二区三区| 综合偷自拍亚洲乱中文字幕 | 亚洲自偷自拍另类图片二区| 免费中文字幕一级毛片| 精品亚洲视频在线观看| 亚洲一区二区三区无码中文字幕 | 中文字幕免费播放| 久久国产精品免费一区| 麻豆国产精品免费视频| 国产成人精品免费视频大全五级| 91精品导航在线网址免费| 国产成在线观看免费视频| 婷婷亚洲天堂影院| 亚洲人成片在线观看| 羞羞漫画页面免费入口欢迎你| 亚洲最大天堂无码精品区| 无码免费又爽又高潮喷水的视频| 亚洲六月丁香六月婷婷色伊人| 偷自拍亚洲视频在线观看| 99视频精品全部免费观看| 亚洲在成人网在线看| 永久免费不卡在线观看黄网站| 亚洲精品黄色视频在线观看免费资源 | 亚洲AV无码乱码在线观看富二代| 亚洲国产成人乱码精品女人久久久不卡 | 日本高清免费不卡在线| 亚洲免费综合色在线视频| 一级毛片成人免费看免费不卡| 久久精品视频免费播放| 国产男女猛烈无遮挡免费网站 | 日本免费网站观看| 人妻仑刮八A级毛片免费看| 59pao成国产成视频永久免费| 波多野结衣中文字幕免费视频 | 麻豆一区二区三区蜜桃免费| 亚洲五月午夜免费在线视频| 色欲aⅴ亚洲情无码AV蜜桃| 99热在线精品免费全部my| 黄色免费网站在线看| 亚洲成av人片天堂网|