国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 使用Spring事件機制實現異步的方法

使用Spring事件機制實現異步的方法

2021-05-10 11:05Joepis Java教程

這篇文章主要介紹了使用Spring事件機制實現異步的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

當把一個事件發布到spring提供的applicationcontext中,被監聽器偵測到,就會執行對應的處理方法。

事件本身
事件是一個自定義的類,需要繼承spring提供的applicationevent

?
1
2
3
4
5
6
7
8
9
@data
public class myevent extends applicationevent {
  private string msg;
 
  public myevent(object source, string msg) {
    super(source);
    this.msg = msg;
  }
}

事件監聽

基本方法是實現applicationlistener接口,自定義一個監聽器,實現onapplicationevent()方法,然后添加到applicationcontext

比如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class mylistener implements applicationlistener<myevent> {
 
  @override
  public void onapplicationevent(myevent event) {
    system.out.print("監聽到myevent事件");
  }
}
...
// springboot的啟動類中添加監聽器
    public static void main(string[] args) {
    springapplication application = new springapplication(myapplication.class);
    application.addlisteners(new mylistener());
    application.run(args);
  }

也可以使用注解@eventlistener(推薦):原理就是通過掃描這個注解,創建監聽器并添加到applicationcontext

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@component
@slf4j
public class myeventhandler {
 
  @eventlistener
  public void handleevent(myevent event) {
    log.info("------------處理事件:{}", event.getmsg());
    try {
      thread.sleep(5 * 1000l);
      log.info("事件1(5s)處理完成");
    } catch (interruptedexception e) {
      e.printstacktrace();
    }
  }
 
}

事件發布

可以通過上下文對象的發布方法configurableapplicationcontext::publishevent()來發布。

也可以實現applicationeventpublisheraware接口來發布(推薦)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@component
@slf4j
public class eventservice implements applicationeventpublisheraware {
  public applicationeventpublisher publisher;
 
  @override
  public void setapplicationeventpublisher(applicationeventpublisher applicationeventpublisher) {
    this.publisher = applicationeventpublisher;
  }
 
  public string doeventwork(string msg) {
    log.info("------------publish event:" + msg);
    myevent event = new myevent(this, msg);
    publisher.publishevent(event);
    return "ok";
  }
}

測試代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
@springboottest
@runwith(springrunner.class)
public class eventservicetest {
  @autowired
  private eventservice service;
 
  @test
  public void eventtest() {
    string msg="java code";
    service.doeventwork(msg);
  }
}

使用Spring事件機制實現異步的方法

注意

如果2個事件之間是繼承關系,會先監聽到子類事件,處理完再監聽父類。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// myevent2 extends myevent
 
@component
@slf4j
public class myeventhandler {
 
  @eventlistener
  public void handleevent(myevent event) {
    log.info("------------處理事件:{}", event.getmsg());
    try {
      thread.sleep(5 * 1000l);
      log.info("事件1(5s)處理完成");
    } catch (interruptedexception e) {
      e.printstacktrace();
    }
  }
 
  @eventlistener
  public void handleevent2(myevent2 event) {
    log.info("------------處理事件2:{}", event.getmsg());
    try {
      thread.sleep(10 * 1000l);
      log.info("事件2(10s)處理完成");
    } catch (interruptedexception e) {
      e.printstacktrace();
    }
  }
}

當我publish一個子類事件myevent2時,日志如下:

使用Spring事件機制實現異步的方法

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.jianshu.com/p/47ae0bbdf205

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天天操操 | 国产99久久久精品视频 | 亚洲日本乱码在线观看 | 欧美一区二区黄 | 色婷婷一二三 | 高清国产午夜精品久久久久久 | 久久久99精品免费观看 | 国产精品极品美女在线观看免费 | 一级毛片免费完整视频 | 日韩欧美在线观看视频 | 一级毛片国产 | 玖玖综合网 | 欧美精品一区视频 | 看av的网址 | 91在线亚洲 | 狠狠的日 | 日韩三级| 狠狠干av| 伊人电影综合网 | 久久久亚洲综合 | 激情在线视频 | 成人羞羞视频免费 | 亚洲视频1区 | 久久久成人精品 | 国产精品久久久久一区二区三区 | 成人精品网站在线观看 | 一区二区三区高清不卡 | 精品成人在线 | 91久久国产综合久久91精品网站 | 久久99一区二区 | 中文字幕一区二区三区乱码在线 | 一区二区三区国产好的精 | 国变精品美女久久久久av爽 | 久久久久久免费 | 狠狠ri | 毛片网站免费在线观看 | 精精国产xxxx视频在线野外 | 精品美女久久久 | 国产黄色电影 | 久久久激情视频 | 国产日皮视频 |