1.Spring的事件监听
1.1 自定义事件
package com.jxf.conf;
import org.springframework.context.ApplicationEvent;
public class MyApplicationEvent extends ApplicationEvent {
/**
* 消息主题
*/
private String topic;
public MyApplicationEvent(String topic, Object source) {
super(source);
this.topic = topic;
}
public MyApplicationEvent(Object source) {
super(source);
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
}
1.2 自定义事件监听器
第一种监听方式(实现接口)
package com.jxf.conf;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
@Override
public void onApplicationEvent(MyApplicationEvent event) {
System.out.println("当前收到事件消息:" +event.getTopic());
}
}
第二种监听方式(注解方式-推荐)
package com.jxf.conf;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
@Configuration
public class MyApplicationListener2 {
/**
* 监听 事件topic等于“test”的事件消息
* @param event
*/
@EventListener(condition = "#event.topic.startsWith('test')")
public void listen1(MyApplicationEvent event){
System.out.println("注解方式监听 topic 以 test 开头的事件消息:" + event);
}
/**
* 监听 事件topic以“test”开头的事件消息
* @param event
*/
@EventListener(condition = "#event.topic.equals('test')")
public void listen2(MyApplicationEvent event){
System.out.println("注解方式监听 topic 等于 test 的事件消息:" + event);
}
}
1.3 发送事件消息
@Autowired
private ApplicationEventPublisher eventPublisher;
// 在方法里面使用
eventPublisher.publishEvent(new MyApplicationEvent("test", "我是数据"));
eventPublisher.publishEvent(new MyApplicationEvent("test123", "我是数据。。。"));