欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀

 更新時(shí)間:2022年09月30日 08:51:27   作者:融極  
這篇文章主要介紹了Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

ApplicationListener概述

ApplicationListener按照字面意思,它應(yīng)該是Spring里面的應(yīng)用監(jiān)聽(tīng)器,也就是Spring為我們提供的基于事件驅(qū)動(dòng)開(kāi)發(fā)的功能。

也就是說(shuō)我們只要寫(xiě)一個(gè)監(jiān)聽(tīng)器來(lái)實(shí)現(xiàn)ApplicationListener接口,該接口中泛型就是我們要監(jiān)聽(tīng)的事件,那么如果我們發(fā)布對(duì)應(yīng)的事件,就能在實(shí)現(xiàn)的監(jiān)聽(tīng)器里面處理。

ApplicationListener作用

主要作用就是來(lái)監(jiān)聽(tīng)I(yíng)OC容器中發(fā)布的一些事件,只有事件發(fā)送便會(huì)來(lái)觸發(fā)該監(jiān)聽(tīng)器的回調(diào),從而來(lái)完成事件驅(qū)動(dòng)模型的開(kāi)發(fā)。

ApplicationListener用法

首先,編寫(xiě)一個(gè)類(lèi)來(lái)實(shí)現(xiàn)ApplicationListener接口,例如MyApplicationListener,這實(shí)際上就是寫(xiě)了一個(gè)監(jiān)聽(tīng)器。

package com.meimeixia.ext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
// 當(dāng)然了,監(jiān)聽(tīng)器這東西要工作,我們還得把它添加在容器中
@Component
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {
	// 當(dāng)容器中發(fā)布此事件以后,下面這個(gè)方法就會(huì)被觸發(fā)
	@Override
	public void onApplicationEvent(ApplicationEvent event) {
		// TODO Auto-generated method stub
		System.out.println("收到事件:" + event);
	}
}

測(cè)試功能

package com.meimeixia.test;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.meimeixia.ext.ExtConfig;
public class IOCTest_Ext {
	
	@Test
	public void test01() {
		AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ExtConfig.class);
		
		// 關(guān)閉容器
		applicationContext.close();
	}
}

可以看到我們收到了兩個(gè)事件,這兩個(gè)事件分別是

org.springframework.context.event.ContextRefreshedEvent和org.springframework.context.event.ContextClosedEvent

其中第一個(gè)是容器已經(jīng)刷新完成事件,第二個(gè)是容器關(guān)閉事件。

而且,從下圖中可以看到,這兩個(gè)事件都是ApplicationEvent下面的事件。

只不過(guò)現(xiàn)在暫時(shí)還沒(méi)用到容器開(kāi)始和容器停止這兩個(gè)事件而已。

其實(shí),想必你也已經(jīng)猜到了,IOC容器在刷新完成之后便會(huì)發(fā)布ContextRefreshedEvent事件,一旦容器關(guān)閉了便會(huì)發(fā)布ContextClosedEvent事件。

我們自己來(lái)發(fā)布一個(gè)事件

    public static void main(String[] args) {
        final AnnotationConfigApplicationContext applicationContext
                = new AnnotationConfigApplicationContext(ExtConfig.class);
        applicationContext.publishEvent("發(fā)送事件");
        applicationContext.close();
    }
@Component
public class MyApplicationListener implements ApplicationListener<PayloadApplicationEvent> {
    public void onApplicationEvent(PayloadApplicationEvent applicationEvent) {
        System.out.println("收到事件:" + applicationEvent);
        System.out.println(applicationEvent.getPayload());
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Spring你不知道的一種解耦模式

    Spring你不知道的一種解耦模式

    本文介紹一種方法,服務(wù)定位模式Service?Locator?Pattern來(lái)解決,它幫助我們消除緊耦合實(shí)現(xiàn)及其依賴(lài)性,并提出將服務(wù)與其具體類(lèi)解耦
    2023-01-01
  • java web實(shí)現(xiàn)郵箱激活與忘記密碼

    java web實(shí)現(xiàn)郵箱激活與忘記密碼

    這篇文章主要為大家詳細(xì)介紹了java web實(shí)現(xiàn)郵箱激活與忘記密碼、重置密碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • SpringBoot詳解Banner的使用

    SpringBoot詳解Banner的使用

    這篇文章主要介紹了超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 深入理解Java設(shè)計(jì)模式之裝飾模式

    深入理解Java設(shè)計(jì)模式之裝飾模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之裝飾模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • SpringBoot整合Redis并且用Redis實(shí)現(xiàn)限流的方法 附Redis解壓包

    SpringBoot整合Redis并且用Redis實(shí)現(xiàn)限流的方法 附Redis解壓包

    這篇文章主要介紹了SpringBoot整合Redis并且用Redis實(shí)現(xiàn)限流的方法 附Redis解壓包,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Java String初始化String域例題解析

    Java String初始化String域例題解析

    這篇文章主要介紹了Java String初始化String域例題解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    很多朋友被idea左側(cè)的圖標(biāo)不見(jiàn)了這一問(wèn)題搞的焦頭爛額,不知道該怎么操作,今天小編就交大家如何控制編輯左側(cè)的功能圖標(biāo) ICON,文字內(nèi)容不多,主要通過(guò)兩張截圖給大家說(shuō)明,感興趣的朋友一起看看吧
    2021-05-05
  • SpringMVC統(tǒng)一異常處理實(shí)例代碼

    SpringMVC統(tǒng)一異常處理實(shí)例代碼

    這篇文章主要介紹了SpringMVC統(tǒng)一異常處理實(shí)例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶(hù)端

    java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶(hù)端

    本文主要介紹了java中TCP實(shí)現(xiàn)回顯服務(wù)器及客戶(hù)端,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作

    JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操

    這篇文章主要介紹了JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論