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

Spring @OnApplicationEvent用法示例小結(jié)(典型用法)

 更新時(shí)間:2025年06月19日 10:41:15   作者:張紫娃  
這篇文章主要介紹了Spring @OnApplicationEvent用法示例小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

典型用法

監(jiān)聽(tīng)自定義事件

// 定義事件類
public class UserRegisteredEvent extends ApplicationEvent {
    private final String username;
    public UserRegisteredEvent(Object source, String username) {
        super(source);
        this.username = username;
    }
    public String getUsername() {
        return username;
    }
}
// 發(fā)布事件
@Service
public class UserService {
    @Autowired
    private ApplicationEventPublisher eventPublisher;
    public void registerUser(String username) {
        System.out.println("用戶注冊(cè):" + username);
        eventPublisher.publishEvent(new UserRegisteredEvent(this, username));
    }
}
// 監(jiān)聽(tīng)事件
@Component
public class UserRegistrationListener {
    @OnApplicationEvent
    public void onUserRegistered(UserRegisteredEvent event) {
        System.out.println("監(jiān)聽(tīng)到用戶注冊(cè)事件:" + event.getUsername());
    }
}

監(jiān)聽(tīng)內(nèi)置 Spring 應(yīng)用事件

Spring 內(nèi)置了一些標(biāo)準(zhǔn)事件,可以直接使用 @OnApplicationEvent 進(jìn)行監(jiān)聽(tīng)。

// 監(jiān)聽(tīng)?wèi)?yīng)用啟動(dòng)完成事件
@Component
public class StartupEventListener {
    @OnApplicationEvent
    public void onApplicationReady(ApplicationReadyEvent event) {
        System.out.println("應(yīng)用已啟動(dòng)完成");
    }
}

異步處理事件(結(jié)合 @Async)

默認(rèn)情況下,事件監(jiān)聽(tīng)是同步執(zhí)行的。若希望異步處理,可結(jié)合 @Async 注解。

@Component
public class AsyncEventListener {
    @OnApplicationEvent
    @Async
    public void handleUserRegistered(UserRegisteredEvent event) {
        System.out.println("【異步】收到用戶注冊(cè)事件:" + event.getUsername());
    }
}

條件過(guò)濾事件(SpEL 表達(dá)式)

可以使用 condition 屬性進(jìn)行條件判斷,僅當(dāng)滿足條件時(shí)才執(zhí)行監(jiān)聽(tīng)方法。

@Component
public class ConditionalEventListener {
    @OnApplicationEvent(condition = "#event.username.startsWith('admin')")
    public void onAdminUserRegistered(UserRegisteredEvent event) {
        System.out.println("管理員用戶注冊(cè):" + event.getUsername());
    }
}

多事件監(jiān)聽(tīng)(泛型支持)

一個(gè)監(jiān)聽(tīng)方法可以監(jiān)聽(tīng)多個(gè)事件類型,只需將參數(shù)聲明為它們的共同父類或接口。

@Component
public class MultiEventLogger {
    @OnApplicationEvent
    public void logEvent(ApplicationEvent event) {
        System.out.println("監(jiān)聽(tīng)到事件:" + event.getClass().getSimpleName());
    }
}

到此這篇關(guān)于Spring @OnApplicationEvent用法示例小結(jié)的文章就介紹到這了,更多相關(guān)Spring @OnApplicationEvent用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門(mén)詳解

    SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門(mén)詳解

    這篇文章主要介紹了Spring?Cloud?Eureka服務(wù)注冊(cè)中心入門(mén)流程分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • eclipse java工程改造為java web工程詳解

    eclipse java工程改造為java web工程詳解

    這篇文章主要介紹了eclipse java工程改造為java web工程詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗

    SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗

    Spring Boot是一個(gè)用于構(gòu)建獨(dú)立的、基于生產(chǎn)級(jí)別的Spring應(yīng)用程序的框架,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 詳解Spring Retry實(shí)現(xiàn)原理

    詳解Spring Retry實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Spring Retry實(shí)現(xiàn)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • java實(shí)現(xiàn)將漢語(yǔ)轉(zhuǎn)換為拼音功能

    java實(shí)現(xiàn)將漢語(yǔ)轉(zhuǎn)換為拼音功能

    這篇文章主要介紹了java實(shí)現(xiàn)將漢語(yǔ)轉(zhuǎn)換為拼音功能,非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下
    2017-05-05
  • SpringBoot加載外部Jar實(shí)現(xiàn)功能按需擴(kuò)展

    SpringBoot加載外部Jar實(shí)現(xiàn)功能按需擴(kuò)展

    這篇文章主要為大家詳細(xì)介紹了SpringBoot加載外部Jar實(shí)現(xiàn)功能按需擴(kuò)展的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • Springboot工具類StringUtils使用教程

    Springboot工具類StringUtils使用教程

    這篇文章主要介紹了Springboot內(nèi)置的工具類之StringUtils的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • spring中的DI步驟詳解

    spring中的DI步驟詳解

    本文主要介紹了bean的裝配實(shí)現(xiàn)過(guò)程,通常對(duì)于簡(jiǎn)單數(shù)據(jù)類型數(shù)據(jù)初始主要在獲得對(duì)象后,使用setter方法完成,所謂的裝配主要是復(fù)雜數(shù)據(jù)類型的依賴注入,感興趣的朋友一起看看吧
    2023-11-11
  • java如何調(diào)用kettle設(shè)置變量和參數(shù)

    java如何調(diào)用kettle設(shè)置變量和參數(shù)

    文章簡(jiǎn)要介紹了如何在Java中調(diào)用Kettle,并重點(diǎn)討論了變量和參數(shù)的區(qū)別,以及在Java代碼中如何正確設(shè)置和使用這些變量,避免覆蓋Kettle中已設(shè)置的變量,作者分享了個(gè)人經(jīng)驗(yàn),并鼓勵(lì)大家參考和使用腳本之家
    2025-01-01
  • springboot如何通過(guò)@Value,@ConfigurationProperties獲取配置

    springboot如何通過(guò)@Value,@ConfigurationProperties獲取配置

    這篇文章主要介紹了springboot如何通過(guò)@Value,@ConfigurationProperties獲取配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論