最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何實(shí)現(xiàn)Spring?Event(異步事件)

 更新時(shí)間:2023年02月14日 10:50:21   作者:upupup-999  
這篇文章主要介紹了如何實(shí)現(xiàn)Spring?Event(異步事件)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、敘述

當(dāng)Spring的事件(Application Event)為Bean和Bean之間的消息同步提供了支持。

當(dāng)一個(gè)Bean處理完成一個(gè)任務(wù)之后,希望另外一個(gè)Bean知道并能做相應(yīng)的處理,這時(shí)我們就需要讓另外一個(gè)Bean監(jiān)聽當(dāng)前Bean所發(fā)生的事件

Spring的事件需要遵循如下流程

  • 自定義事件,繼承ApplicationEvent
  • 定義事件監(jiān)聽器,實(shí)現(xiàn)ApplicationListener
  • 使用容器發(fā)布事件

Spring框架中事件

Spring提供了以下5種標(biāo)準(zhǔn)的事件:

  • 上下文更新事件(ContextRefreshedEvent):在調(diào)用ConfigurableApplicationContext 接口中的refresh()方法時(shí)被觸發(fā)。
  • 上下文開始事件(ContextStartedEvent):當(dāng)容器調(diào)用ConfigurableApplicationContext的Start()方法開始/重新開始容器時(shí)觸發(fā)該事件。
  • 上下文停止事件(ContextStoppedEvent):當(dāng)容器調(diào)用ConfigurableApplicationContext的Stop()方法停止容器時(shí)觸發(fā)該事件。
  • 上下文關(guān)閉事件(ContextClosedEvent):當(dāng)ApplicationContext被關(guān)閉時(shí)觸發(fā)該事件。容器被關(guān)閉時(shí),其管理的所有單例Bean都被銷毀。

請(qǐng)求處理事件(RequestHandledEvent):在Web應(yīng)用中,當(dāng)一個(gè)http請(qǐng)求(request)結(jié)束觸發(fā)該事件。

如果一個(gè)bean實(shí)現(xiàn)了ApplicationListener接口,當(dāng)一個(gè)ApplicationEvent被發(fā)布以后,bean會(huì)自動(dòng)被通知

二、上Demo示例

1. pom文件

<!-- https://mvnrepository.com/artifact/org.springframework/org.springframework.context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.context</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

2. 自定義一個(gè)事件繼承ApplicationEvent

import com.hrm.dto.ExamAnswer;
import org.springframework.context.ApplicationEvent;

/**
 * 考生答題事件
 */
public class AnswerEvent extends ApplicationEvent {
    private static final long serialVersionUID = 1L;
    public AnswerEvent(ExamAnswer answer) {
        super(answer);
    }
}

3. 自定義一個(gè)監(jiān)聽器實(shí)現(xiàn)ApplicationListener<自定義事件>

import com.hrm.dto.ExamAnswer;
import com.hrm.service.event.AnswerEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;

/**
 * 答題監(jiān)聽事件
 */
@Component
@EnableAsync
public class AnswerEventListener implements ApplicationListener<ExamAnswer> {
    @Override
    public void onApplicationEvent(AnswerEvent answerEvent) {
        ExamAnswer answer = (ExamAnswer) answerEvent.getSource();
        if(answer != null) {
            super.save(answer);
        }
    }
}

4. 再來一個(gè)事件發(fā)布類

import com.hrm.dto.ExamAnswer;
import com.hrm.service.event.AnswerEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Repository;

@Repository
public class ExamAnswerDaoImpl implements ExamAnswerDao {
    @Autowired
    private ApplicationContext applicationContext;
    
	private void putAnswerToSpringEvent(ExamAnswer examAnswer) {
		發(fā)送Spring Event 事件
        applicationContext.publishEvent(new AnswerEvent(examAnswer));
    }
}

總結(jié)

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

相關(guān)文章

  • org.springframework.web.client.ResourceAccessException資源訪問錯(cuò)誤的解決方法

    org.springframework.web.client.ResourceAccessException資源訪問錯(cuò)誤

    本文主要介紹了org.springframework.web.client.ResourceAccessException資源訪問錯(cuò)誤的解決方法,首先需要分析異常的詳細(xì)信息,以確定具體的錯(cuò)誤原因,感興趣的可以了解一下
    2024-05-05
  • 淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解

    淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解

    下面小編就為大家?guī)硪黄獪\談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java操作FTP實(shí)現(xiàn)上傳下載功能

    Java操作FTP實(shí)現(xiàn)上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了Java如何通過操作FTP實(shí)現(xiàn)上傳下載的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-11-11
  • 基于Java中的數(shù)值和集合詳解

    基于Java中的數(shù)值和集合詳解

    下面小編就為大家?guī)硪黄贘ava中的數(shù)值和集合詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java根據(jù)key獲取枚舉值的操作方法

    Java根據(jù)key獲取枚舉值的操作方法

    枚舉(enum)算一種“語法糖”,是指一個(gè)經(jīng)過排序的、被打包成一個(gè)單一實(shí)體的項(xiàng)列表,一個(gè)枚舉的實(shí)例可以使用枚舉項(xiàng)列表中任意單一項(xiàng)的值,本文給大家介紹了Java?如何快速根據(jù)?key?獲取枚舉的值,需要的朋友可以參考下
    2024-07-07
  • 利用Java+OpenCV實(shí)現(xiàn)拍照功能

    利用Java+OpenCV實(shí)現(xiàn)拍照功能

    網(wǎng)上大多是利用C語言或者Python實(shí)現(xiàn)拍照功能,本文將為大家介紹另一種方法,即在Java中調(diào)用OpenCV實(shí)現(xiàn)拍照功能,感興趣的可以了解一下
    2022-01-01
  • 使用SpringBoot+EasyExcel+Vue實(shí)現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解

    使用SpringBoot+EasyExcel+Vue實(shí)現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解

    這篇文章主要介紹了使用SpringBoot+VUE+EasyExcel?整合導(dǎo)入導(dǎo)出數(shù)據(jù)的過程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • java如何獲取視頻文件的編解碼器代碼示例

    java如何獲取視頻文件的編解碼器代碼示例

    這篇文章主要給大家介紹了關(guān)于java如何獲取視頻文件的編解碼器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-05-05
  • Mybatis實(shí)現(xiàn)查詢相冊(cè)數(shù)據(jù)列表流程講解

    Mybatis實(shí)現(xiàn)查詢相冊(cè)數(shù)據(jù)列表流程講解

    這篇文章主要介紹了Mybatis實(shí)現(xiàn)查詢相冊(cè)數(shù)據(jù)列表流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • java實(shí)現(xiàn)的小時(shí)鐘示例分享

    java實(shí)現(xiàn)的小時(shí)鐘示例分享

    這篇文章主要介紹了java實(shí)現(xiàn)的小時(shí)鐘示例,需要的朋友可以參考下
    2014-02-02

最新評(píng)論

化州市| 东丰县| 秦皇岛市| 修水县| 九龙坡区| 冕宁县| 甘肃省| 泽库县| 舒兰市| 无棣县| 柞水县| 油尖旺区| 西和县| 大洼县| 桐城市| 定结县| 紫金县| 都昌县| 栾城县| 宣城市| 四子王旗| 巩义市| 七台河市| 万全县| 呼伦贝尔市| 日土县| 镇雄县| 耿马| 乾安县| 日土县| 扎赉特旗| 清涧县| 新昌县| 温泉县| 福泉市| 赤峰市| 永平县| 望都县| 萍乡市| 宽城| 广宗县|