**
Spring Boot 事件监听
**
初学Spring事件监听,对其概念和实现方式并不熟悉,只浅学了皮毛刚刚会用,故记录在此已备后用。
在写事件前需要在Config配置中加入配置
package gov.kchange.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("gov.kchange.event")
public class EventConfig {
}
事件监听分为3部分
1、事件
指事件其本身可以用来记录一些相关信息
package gov.kchange.event;
import javafx.application.Application;
import org.springframework.context.ApplicationEvent;
/**
* 创建人:madmk
* 创建时间:2017/9/6 15:52
* 创建项目:gov.kchange.applicationevent
* 用途:自定义事件
* 主要方法:
*/
public class DomeEvent extends ApplicationEvent {
private String msg;
public DomeEvent(Object source,String msg) {
super(source);
this.msg=msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
2、事件监听器
用来监听事件可定义多个
package gov.kchange.event;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
/**
* 创建人:madmk
* 创建时间:2017/9/6 15:54
* 创建项目:gov.kchange.applicationevent
* 用途:自定义事件监听器
* 主要方法:
*/
@Async//注1
@Component
public class DemoListener implements ApplicationListener<DomeEvent>{
@Override
public void onApplicationEvent(DomeEvent domeEvent) {
System.out.printf("监听:"+domeEvent.getMsg());
}
}
3、事件发布
用于事件发布(发布后监听器会执行)
package gov.kchange.event;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
/**
* 创建人:madmk
* 创建时间:2017/9/6 15:57
* 创建项目:gov.kchange.applicationevent
* 用途:事件发布类
* 主要方法:
*/
@Component
public class DemoPublisher {
@Autowired
ApplicationContext applicationContext;
public void publish(String msg){
applicationContext.publishEvent(new DomeEvent(this,msg));//注2
}
}
注1:@Async//加入该注释后表明事件执行为异步执行(可写在方法或类上)
注2:为发布事件语句可写在任何方法中当程序执行到此时所有有关监听器会响应并执行监听器方法