亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring中ApplicationEvent和ApplicationListener封裝

2019-11-14 22:41:14
字體:
來源:轉載
供稿:網友
SPRing中applicationEvent和ApplicationListener封裝

1.測試程序EventTest.java,發布一個事件只需要調用FrameEventHolder.publishEvent()方法即可。

 1 package com.junge.spring.event; 2  3 import com.junge.spring.vo.Mail; 4  5 public class EventTest { 6  7     /** 8      * @param args 9      */10     public static void main(String[] args) {11         FrameEvent frameEvent = new FrameEvent();12 13         Mail mail = new Mail();14         mail.setContent("accdddount");15         mail.setEmail("333@email.com");16 17         frameEvent.setPrameter(mail);18         frameEvent.setEventId("send_mail_notify");19         frameEvent.setSync(false);20 21         FrameEventHolder.publishEvent(frameEvent);22     }23 24 }

2.應用上下文保持器ContextHolder.java

 1 /** 2  *  3  */ 4 package com.junge.spring.context; 5  6 import org.springframework.context.ApplicationContext; 7 import org.springframework.context.support.ClassPathxmlApplicationContext; 8  9 /**10  * @author Administrator11  * 12  */13 public class ContextHolder {14 15     private static ApplicationContext context = null;16 17     static {18         context = new ClassPathXmlApplicationContext("event.xml");19     }20 21     public static ApplicationContext getApplicationContext() {22         return context;23     }24 }

3.事件類FrameEvent.java,繼承自Spring的ApplicationEvent,可以保持事件處理參數

 1 /** 2  *  3  */ 4 package com.junge.spring.event; 5  6 import org.springframework.context.ApplicationEvent; 7  8 /** 9  * @author Administrator10  * 11  */12 public class FrameEvent extends ApplicationEvent {13 14     private static final long serialVersionUID = 1L;15 16     /**17      * 保持事件業務參數18      */19     private Object prameter;20 21     /**22      * 一類事件編號23      */24     private String eventId;25 26     public FrameEvent() {27         super("source");28     }29 30     public FrameEvent(Object source) {31         super(source);32     }33 34     public Object getPrameter() {35         return prameter;36     }37 38     public void setPrameter(Object prameter) {39         this.prameter = prameter;40     }41 42     public String getEventId() {43         return eventId;44     }45 46     public void setEventId(String eventId) {47         this.eventId = eventId;48     }49 50 }

4.發布事件靜態方法 FrameEventHolder.java

package com.junge.spring.event;import org.springframework.util.Assert;import com.junge.spring.context.ContextHolder;public class FrameEventHolder {public static void publishEvent(FrameEvent frameEvent) {Assert.notNull(frameEvent);ContextHolder.getApplicationContext().publishEvent(frameEvent);}}

5.事件處理接口EventHandler.java

 1 package com.junge.spring.event.handler; 2  3 public interface EventHandler { 4  5     /** 6      * 獲取事件ID 7      */ 8     String getEventId(); 9 10     /**11      * 處理事件入口12      * 13      * @param parameter14      */15     void handle(Object parameter);16 17 }

6.事件處理接口抽象類FrameEventHandler.java,業務事件處理從該類繼承

 1 /** 2  *  3  */ 4 package com.junge.spring.event.handler; 5  6 /** 7  * @author Administrator 8  *  9  */10 public abstract class FrameEventHandler implements EventHandler {11 12     private String eventId;13 14     /**15      * @param eventId16      *            the eventId to set17      */18     public void setEventId(String eventId) {19         this.eventId = eventId;20     }21 22     /*23      * (non-Javadoc)24      * 25      * @see com.junge.spring.event.listener.EventHandler#getEventId()26      */27     @Override28     public String getEventId() {29 30         return eventId;31     }32 }

7.業務事件處理實現MailEventHandler.java,從FrameEventHandler.java繼承,實現handle方法

 1 /** 2  *  3  */ 4 package com.junge.spring.event.handler; 5  6 import com.junge.spring.vo.Mail; 7  8 /** 9  * @author Administrator10  * 11  */12 public class MailEventHandler extends FrameEventHandler {13 14     @Override15     public void handle(Object parameter) {16         if (null != parameter) {17             Mail mail = (Mail) parameter;18             System.out.println("需要發送郵件給" + mail.getEmail() + ",郵件內容是:"19                     + mail.getContent());20         }21 22     }23 24 }

8.事件監聽器FrameEventListener.java,調用事件業務處理邏輯(即調用handle方法)

 1 /** 2  *  3  */ 4 package com.junge.spring.event.listener; 5  6 import org.springframework.context.ApplicationListener; 7  8 import com.junge.spring.event.FrameEvent; 9 import com.junge.spring.event.handler.EventHandler;10 11 /**12  * @author Administrator13  * 14  */15 public class FrameEventListener implements ApplicationListener<FrameEvent> {16 17     private EventHandler eventHandler;18 19     @Override20     public void onApplicationEvent(FrameEvent event) {21 22         if (eventHandler.getEventId().equals(event.getEventId())) {23             eventHandler.handle(event.getPrameter());24         }25     }26 27     public EventHandler getEventHandler() {28         return eventHandler;29     }30 31     public void setEventHandler(EventHandler eventHandler) {32         this.eventHandler = eventHandler;33     }34 35 }

9.業務VO對象Mail.java

 1 /** 2  *  3  */ 4 package com.junge.spring.vo; 5  6 /** 7  * @author Administrator 8  * 9  */10 public class Mail {11     private String email;12     13     private String content;14 15     public String getEmail() {16         return email;17     }18 19     public void setEmail(String email) {20         this.email = email;21     }22 23     public String getContent() {24         return content;25     }26 27     public void setContent(String content) {28         this.content = content;29     }30 }

10.Spring業務配置文件event.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <p:beans xmlns:p="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://www.springframework.org/schema/beans spring-beans-3.2.xsd "> 5  6     <p:bean id="mailHandler" class="com.junge.spring.event.handler.MailEventHandler"> 7         <p:property name="eventId" value="send_mail_notify" /> 8     </p:bean> 9 10     <p:bean id="mailListener" class="com.junge.spring.event.listener.FrameEventListener">11         <p:property name="eventHandler" ref="mailHandler" />12     </p:bean>13 </p:beans>

11.測試結果

2015-1-23 14:23:17 org.springframework.context.support.AbstractApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2808b3: startup date [Fri Jan 23 14:23:17 CST 2015]; root of context hierarchy2015-1-23 14:23:18 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [event.xml]2015-1-23 14:23:19 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@db4fa2: defining beans [mailHandler,mailListener]; root of factory hierarchy需要發送郵件給333@email.com,郵件內容是:accdddount


上一篇:JSTL

下一篇:Ubuntu14.04安裝JDK

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久免费观看视频| 国语自产在线不卡| 97精品欧美一区二区三区| 精品国产欧美一区二区三区成人| 欧美—级a级欧美特级ar全黄| 日韩成人av网址| 国产欧洲精品视频| 亚洲国产精品99久久| 中文字幕日韩在线观看| 国产一区二区三区精品久久久| 97精品国产aⅴ7777| 欧美体内谢she精2性欧美| 成人激情视频小说免费下载| 日韩中文视频免费在线观看| 91色视频在线观看| 亚洲视频在线观看视频| 欧美视频中文在线看| 国产欧美精品久久久| 亚洲尤物视频网| 国产精品日日做人人爱| 97在线精品视频| 97在线观看免费| 欧美亚洲国产成人精品| 亚洲国产毛片完整版| 18性欧美xxxⅹ性满足| 久久精品人人做人人爽| 久久激情视频久久| 欧美性xxxxxxxxx| 成人久久一区二区| 欧美一级片免费在线| 91久久精品久久国产性色也91| 日本精品va在线观看| 日韩精品中文字幕在线| 国产视频观看一区| 久久国产精品久久精品| 91欧美精品成人综合在线观看| 日韩免费在线观看视频| 91亚洲国产成人精品性色| 色综合老司机第九色激情| 中文字幕免费精品一区| 日韩av电影中文字幕| 欧美老少做受xxxx高潮| 日韩精品中文字幕久久臀| 亚洲人高潮女人毛茸茸| 亚洲成人av在线播放| 国产综合在线看| 国内精品400部情侣激情| 国产成人av网址| 狠狠综合久久av一区二区小说| 亚洲精品欧美日韩专区| 亚洲黄色在线看| 亚洲一区二区久久久久久| 韩国美女主播一区| 中文字幕亚洲综合| 久久久久国色av免费观看性色| 国产视频精品xxxx| 日韩久久免费视频| 欧美综合国产精品久久丁香| 国产成人鲁鲁免费视频a| 91亚洲一区精品| 欧美成在线视频| 亚洲视频日韩精品| 欧美大尺度在线观看| 91av在线视频观看| 欧美xxxx做受欧美.88| 亚洲级视频在线观看免费1级| 亚洲四色影视在线观看| 色爱精品视频一区| 日韩性生活视频| 亚洲a∨日韩av高清在线观看| 97在线视频免费观看| 久久久成人的性感天堂| 成人免费观看a| 97视频色精品| 国产精品精品久久久久久| 国产精品欧美一区二区三区奶水| 欧美激情2020午夜免费观看| 中文字幕av一区| 午夜伦理精品一区| 欧美乱大交xxxxx另类电影| 国产伦精品免费视频| 日韩中文字幕免费视频| 热久久这里只有精品| 亚洲国产精品va在线| 亚洲网站在线看| 欧美亚洲国产视频小说| 韩国三级日本三级少妇99| 美女撒尿一区二区三区| 亚洲网站在线观看| 欧美日韩国产页| 91久久精品美女| 中文字幕久久久| 中文字幕亚洲欧美一区二区三区| 欧美有码在线观看| 久久免费福利视频| 日韩亚洲综合在线| 色偷偷888欧美精品久久久| 亚洲女人被黑人巨大进入| 精品一区二区三区四区| 国产精品久久久久久亚洲影视| 国产91精品最新在线播放| 亚洲天堂视频在线观看| 日韩欧美在线视频观看| 久久免费国产视频| 97在线视频一区| 成人夜晚看av| 国产精品xxx视频| 日韩欧美视频一区二区三区| 欧美性xxxxhd| 亚洲精品久久久久久久久久久| 欧美亚洲国产成人精品| 亚洲电影免费观看高清| 亚洲成色777777女色窝| 日本国产欧美一区二区三区| 国产欧美一区二区三区在线看| 国产精品mp4| 欧美高清自拍一区| 亚洲国产精品99久久| 久久久精品视频成人| 一区二区三区无码高清视频| 国产精品美女网站| 亚洲香蕉成视频在线观看| 91av国产在线| 国产精品久久久久久久久久东京| 96pao国产成视频永久免费| 亚洲精品久久久久久久久久久久| 欧美性视频网站| 4388成人网| 亚洲va码欧洲m码| 欧亚精品中文字幕| 欧美丝袜第一区| 精品中文字幕在线观看| 日韩高清av在线| 欧美日韩国产123| 国产亚洲精品久久久优势| 久久精品中文字幕一区| 欧美午夜激情在线| 欧美性一区二区三区| 国语自产偷拍精品视频偷| 亚洲伦理中文字幕| 国产一区二区三区在线免费观看| 色噜噜狠狠狠综合曰曰曰88av| 俺去亚洲欧洲欧美日韩| 精品国产一区二区三区久久狼黑人| 中文字幕在线看视频国产欧美| 中文字幕精品在线| 欧美色道久久88综合亚洲精品| 亚洲区中文字幕| 日韩精品免费在线播放| 国产精品夜色7777狼人| 亚洲欧美第一页| 成人黄色片网站| 福利视频第一区| 亚洲a中文字幕| 精品亚洲男同gayvideo网站| 久久久黄色av| 国产一区二区成人| 国产精品美女免费看| 亚洲а∨天堂久久精品9966| 日韩欧美中文字幕在线播放| 国产一区二区三区网站| 欧美在线视频一二三| 亚洲精品国精品久久99热| 欧美成人精品激情在线观看|