<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怎么定義呢?  回復  更多評論   

    主站蜘蛛池模板: 成人免费视频一区| 日韩a级无码免费视频| 国产卡一卡二卡三免费入口 | 亚洲熟女www一区二区三区| 最近中文字幕免费完整| 亚洲精品视频在线播放| 人与禽交免费网站视频| 亚洲毛片免费观看| 午夜宅男在线永久免费观看网| 亚洲免费黄色网址| 啦啦啦高清视频在线观看免费 | 一级毛片免费播放| 亚洲精品不卡视频| 日韩av无码成人无码免费| 亚洲AV无码一区二区三区牛牛| 在线a毛片免费视频观看| 国产综合成人亚洲区| 亚洲成?v人片天堂网无码| 成人免费一区二区三区| 亚洲第一区香蕉_国产a| 1000部拍拍拍18勿入免费凤凰福利 | a级毛片免费全部播放| 内射干少妇亚洲69XXX| 性做久久久久久免费观看| 国产亚洲综合视频| 亚洲乱码无码永久不卡在线| 蜜桃成人无码区免费视频网站| 亚洲免费一级视频| 日韩亚洲国产综合久久久| 在线观看肉片AV网站免费| 亚洲乱码在线播放| 亚洲国产精品激情在线观看 | 一级特黄色毛片免费看| 久久精品国产精品亚洲色婷婷| 日本在线高清免费爱做网站| 美国免费高清一级毛片| 亚洲激情中文字幕| 国产免费131美女视频| 无码专区AAAAAA免费视频| 亚洲熟妇自偷自拍另欧美| 国产亚洲A∨片在线观看|