Spring_事件监听

处理逻辑:java

  自定义事件(包含须要须要的数据体)--->  自定义监听器(能够经过泛型限制须要监听的事件,固然也能够不涉及) ---> 向IOC中发布事件 ---> 在监听器中完成实际业务的处理过程。spring

一、自定义事件。并发

  继承ApplicationEventapp

package com.shanxilgong.linxi.listener;

import org.springframework.context.ApplicationEvent;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义事件
 */
public class MyApplicationEvent extends ApplicationEvent
{

    public MyApplicationEvent(Object source)
    {
        super(source);
    }

    private Map<String,String> data = new HashMap<String,String>();

    public Map<String, String> getData() {
        return data;
    }

    public void setData(Map<String, String> data) {
        this.data = data;
    }
}

二、模拟南向采集任务ide

   2.1 spring boot 中的ioc容器this

     ConfigurableApplicationContext application = SpringApplication.run(SmalprocesssApplication.class, args);spa

 

  启动定时任务:code

  

  定时任务:34行,构建事件对象。37行,向IOC容器中发布事件。
对象

 1 package com.shanxilgong.linxi.listener;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.context.ConfigurableApplicationContext;
 5 import org.springframework.stereotype.Component;
 6 
 7 import java.util.HashMap;
 8 import java.util.Map;
 9 import java.util.TimerTask;
10 
11 
12 /***
13  * 该定时任务用于模拟南向周期性采集任务,并发布采集结果事件。
14  */
15 
16 @Component
17 public class MyTimerTask extends TimerTask
18 {
19 
20     @Autowired
21     private ConfigurableApplicationContext configurableApplicationContext;
22 
23     public MyTimerTask(){
24 
25     }
26 
27     @Override
28     public void run()
29     {
30         Map map = new HashMap();
31         map.put("name","zhangsan");
32         map.put("age","20");
33 
34         MyApplicationEvent event  = new MyApplicationEvent(new Object());
35         event.setData(map);
36         // spring 的 ioc 容器,发布事件
37         configurableApplicationContext.publishEvent(event);
38     }
39 }

三、自定义监听器blog

  实现ApplicationListener,并添加须要监听的事件泛型,如14行。(固然也能够不添加监听事件泛型)

 1 package com.shanxilgong.linxi.listener;
 2 
 3 import org.springframework.context.ApplicationEvent;
 4 import org.springframework.context.ApplicationListener;
 5 import org.springframework.stereotype.Component;
 6 
 7 import java.lang.reflect.Method;
 8 
 9 /**
10  * 自定义监听器
11  * 一、能够经过泛型指定具体监听哪一类事件
12  */
13 
14 public class MyApplicationListener implements ApplicationListener<MyApplicationEvent>
15 {
16     @Override
17     public void onApplicationEvent(MyApplicationEvent event)
18     {
19         System.out.println("捕获的数据为:"+event.getData());
20     }
21 }
相关文章
相关标签/搜索