麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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("[email protected]");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需要發送郵件給[email protected],郵件內容是:accdddount


上一篇:JSTL

下一篇:Ubuntu14.04安裝JDK

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕一区二区三区四区 | 成人免费午夜视频 | 亚洲成人高清在线观看 | 午夜视频导航 | 亚洲国产中文字幕 | xxnxx中国18| chinese 军人 gay xx 呻吟 | 国产三级在线观看a | 亚洲乱妇19p | 久久久久亚洲视频 | 日本在线不卡一区二区 | 亚洲码无人客一区二区三区 | 中文字幕天堂在线 | 综合97| 国产91精品久久久久久久 | 黄视频免费在线观看 | 一级黄色欧美 | 在线看小早川怜子av | 中国免费一级毛片 | 毛片免费看的 | 国产成人精品自拍视频 | 亚洲国产网站 | 免费看一级片 | 91精品国产综合久久久动漫日韩 | 羞羞答答www网站进入 | 成人在线视频在线观看 | 黄视频网站免费在线观看 | 羞羞视频一区二区 | 日韩中文一区 | 欧美日韩成人一区二区 | 成年人黄视频 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 午夜生活理论片 | 成人性生活视频在线观看 | 久久久成人动漫 | 亚洲免费看片网站 | 亚洲国产午夜精品 | 国产jjizz一区二区三区视频 | 在线观看免费污视频 | 中文字幕在线观看1 | 性看小视频 |