Spring的監聽事件ApplicationListener和ApplicationEvent及@EventListener用法
什麼是ApplicationContext?
它是spring的核心,Context我們通常解釋為上下文環境,但是理解成容器會更好些。
ApplicationContext則是應用的容器。
Spring把Bean(object)放在容器中,需要用就通過get方法取出來。
ApplicationEvent
是個抽象類,裡面只有一個建構函式和一個長整型的timestamp。
ApplicationListener
是一個介面,裡面只有一個onApplicationEvent方法。
所以自己的類在實現該介面的時候,要實裝該方法。
如果在上下文中部署一個實現了ApplicationListener介面的bean,
那麼每當在一個ApplicationEvent釋出到 ApplicationContext時,
這個bean得到通知。其實這就是標準的Oberver設計模式。
下面給出例子:
首先建立一個ApplicationEvent實現類:
1 package com.spring.event; 2 3 import org.springframework.context.ApplicationEvent; 4 5 public class EmailEvent extends ApplicationEvent { 6 /** 7 * <p>Description:</p>8 */ 9 private static final long serialVersionUID = 1L; 10 public String address; 11 public String text; 12 13 public EmailEvent(Object source) { 14 super(source); 15 } 16 17 public EmailEvent(Object source, String address, String text) { 18 super(source); 19 this.address = address; 20 this.text = text; 21 } 22 23 public void print(){ 24 System.out.println("hello spring event!"); 25 } 26 27 }
給出監聽器:
1 package com.spring.event; 2 3 import org.springframework.context.ApplicationEvent; 4 import org.springframework.context.ApplicationListener; 5 public class EmailListener implements ApplicationListener { 6 7 public void onApplicationEvent(ApplicationEvent event) { 8 if(event instanceof EmailEvent){ 9 EmailEvent emailEvent = (EmailEvent)event; 10 emailEvent.print(); 11 System.out.println("the source is:"+emailEvent.getSource()); 12 System.out.println("the address is:"+emailEvent.address); 13 System.out.println("the email's context is:"+emailEvent.text); 14 } 15 16 } 17 18 }
applicationContext.xml檔案配置:
<bean id="emailListener" class="com.spring.event.EmailListener"></bean>
測試類:
1 package com.spring.event; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 public class Test { 7 public static void main(String[] args) { 8 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 9 10 //HelloBean hello = (HelloBean) context.getBean("helloBean"); 11 //hello.setApplicationContext(context); 12 EmailEvent event = new EmailEvent("hello","[email protected]","this is a email text!"); 13 context.publishEvent(event); 14 //System.out.println(); 15 } 16 }
測試結果
hello spring event! the source is:hello the address is:[email protected]163.com the email's context is:this is a email text!
相關推薦
Spring的監聽事件ApplicationListener和ApplicationEvent及@EventListener用法
什麼是ApplicationContext? 它是spring的核心,Context我們通常解釋為上下文環境,但是理解成容器會更好些。 ApplicationContext則是應用的容器。 Spring把Bean(object)放在容器中,需要用就通過get方法取出來。 ApplicationEven
Spring 的監聽事件 ApplicationListener 和 ApplicationEvent 用法及呼叫過程詳解
ApplicationListener呼叫過程詳解: https://blog.csdn.net/u014263388/article/details/78996509 使用場景 在一些業務場景中,當容器初始化完成之後,需要處理一些操作,比如一些資料的載入、初始化快取、特定任務的註冊等等。這
Spring 的監聽事件 ApplicationListener 和 ApplicationEvent 用法
scan bsp string bject wired static final HA AD spring事件(application event)為Bean與Bean之間的消息通信添加了支持,當一個Bean處理完一個任務之後,希望另一個Bean知道並能做相應的處理,這時我
Spring監聽,ApplicationListener
import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; importorg.springframewo
springboot---監聽ApplicationListener和ApplicationEvent簡單使用
監聽ApplicationListener和ApplicationEvent簡單使用 本來想實現一個功能就是,在登入成功之後,將一些使用者的資訊,放入到session裡面,本來想,在登入介面成功回撥之後,在寫,但是想做一個監聽的動作,監聽著登入成功的介面,之後走到監聽函式裡面,進行業務處理。
JavaScript之事件概念和監聽事件
scrip isp doctype utf itl 技術分享 創建 img ret 1、事件的概念: JavaScript使我們有能力創建動態頁面,網頁中的每一個元素都可以產生某些觸發JavaScript函數的事件。我們可以認為事件是可以被JavaScript偵測到的一種行
JS過渡結束監聽事件及使用自定義事件解決兼容問題的方法
定義 inf mage image 過渡 解決 技術分享 分享 img 1.JS過渡結束監聽事件 2.自定義事件解決兼容問題 JS過渡結束監聽事件及使用自定義事件解決兼容問題的方法
javascript監聽頁面重新整理和頁面關閉事件方法詳解
在我們的日常生活中,時常遇到這麼一種情況,當我們在點選一個連結、關閉頁面、表單提交時等情況,會提示我們是否確認該操作等資訊。 這裡就給大家講講javascript的onbeforeunload()和onunload()兩個事件。 相同點: 兩者都是在對頁面的關閉或重新整理事件作個操作。
Button一些屬性和幾種監聽事件
介紹: TextView與Button是繼承關係,Button繼承自TextView。開發中一般情況下,TextView用來承載靜態文字,Button用來響應點選事件。很多人容易忽略的一點是TextVIew也有點選事件,TextView 繼承自View,點選事件是從View就有的特性,所以Tex
js 監聽事件的疊加和移除
html DOM元素有很多on開頭的監聽事件,如onload、onclick等,見DOM事件列表。但是同一種事件,後面註冊的會覆蓋前面的: window.onresize = function(){ alert(1); } window.onresize = function(){ alert
unity打包webgl程式和js鍵盤監聽事件衝突的問題。
最近用unity釋出webgl程式時,出現了一個挺蛋疼的問題就是,webgl裡面的程式他會接受js的鍵盤監聽事件,這樣就導致了webgl程式可以使用出入框,讓後js程式的輸入框就無效了,為了解決這個問題,我也找了一些資料,不過看了以後感覺大部分不能用,後來通過自己研究總結得出了下面的程式碼,親測可用,廢話不多
unity打包webgl程序和js鍵盤監聽事件沖突的問題。
apt 初始 types oar document 了解 打包 tlist 判斷 最近用unity發布webgl程序時,出現了一個挺蛋疼的問題就是,webgl裏面的程序他會接受js的鍵盤監聽事件,這樣就導致了webgl程序可以使用出入框,讓後js程序的輸入框就無效了,為了解
事件監聽、ListView的優化及使用
一、ListView的優化&使用 ListView的優化:ListView的優化主要包括兩個方面,分別是對自身的優化以及其介面卡(Adapter)的優化。 1、使用ViewHolder模式來提高效率 Viewholder模式充分了ListView的檢視快
安卓實現任意控制元件view可拖拽,並監聽拖拽和點選事件,可自動拉回螢幕邊緣
因為專案中有需要實現控制元件可任意拖拽的需求,所以簡單寫了個自定義OnTouchListener,以作拋磚引玉,歡迎大家提議反饋。 完整實現類如下,程式碼中有詳細註釋: 使用者可以決定是否開啟自動拖拽邊緣功能,可以監聽控制元件的拖拽和點選事件 public cl
js/jQery中的鍵盤監聽事件觸發回車鍵位登入觸發教程及demo
js/jQery中的鍵盤監聽事件觸發回車鍵位登入觸發教程及demo 在我們專案的過程中經常會遇到需要鍵盤 來控制的事件,比如:登入、搜尋等,廢話不多說上程式碼!! 我這裡主要是做了兩個的監聽,一個是回車的,一個是通用複製的, 可以在判斷中寫入方法體來控制 <script
EditText監聽輸入完成和設定點選事件時與父控制元件的衝突問題
最近在做專案時,發現一個問題,最後找到了解決辦法,特在此記錄一下,便於以後自己回憶以及和大家分享 問題描述:我在專案的頁面B放了一個線性佈局,裡面有EditText,本意是從A頁面跳轉到B頁面時,可能會先做別的操作,在修改EditText裡面的內容(闡述一下:
jquery監聽ctrl + c 和 滑鼠右鍵“複製”事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>這裡是測試複製
Button和ImageButton的監聽事件
監聽事件實現的方式: 1、匿名內部類的實現 2、獨立類的實現 3、介面方式實現 一、匿名內部類 通過匿名內部類,直接在Button物件的setOnClickListener的方法中直接n
javascript如何監聽頁面重新整理和頁面關閉事件
在我們的日常生活中,時常遇到這麼一種情況,當我們在點選一個連結、關閉頁面、表單提交時等情況,會提示我們是否確認該操作等資訊。 這裡就給大家講講javascript的onbeforeunload()和onunload()兩個事件。 相同點: 兩者都是在對頁面的關閉或重新整理
Spring 初探(五)(Spring Bean 自動裝配與自定義監聽事件)
現在通行的使用bean的方法是不通過xml進行配置,而僅僅採用java 內建的類指明bean及相應的依賴關係,下面展開敘述。 @Configuration可以宣告某個類是作為配置類,在這樣的類中 通過@Bean進行修飾的方法可以返回相應的bean類 通過由Annotatio