应用场景:
提交订单的时候需要构造订单很多对象,可以使用事件监听器处理构造订单对象的逻辑,包括下单的校验。监听器的事务会跟着外部定义走。
主要是用于业务解耦,各个功能代码不冗余到一块。
观察者模式的一种体现。
1.先创建一个监听器,举例两种写法
@Component
public class TestEventListener implements ApplicationListener<TestEvent> {
//实现接口,重新方法
@Override
public void onApplicationEvent(TestEvent event) {
System.out.println(event.getTestParam().getStr());
}
}
@Component
public class TestEventListener {
//直接使用监听器注解
@EventListener
public void listen(TestEvent event){
System.out.println(event.getTestParam().getStr());
}
}
2.创建一个事件类,继承ApplicationEvent,构造方法里面传入参数对象,在事件监听器里面通过这个事件类获取传入的参数
public class TestEvent extends ApplicationEvent {
private TestParam testParam;
public TestEvent(TestParam testParam) {
super(testParam);
this.testParam=testParam;
}
public TestParam getTestParam() {
return testParam;
}
public void setTestParam(TestParam testParam) {
this.testParam = testParam;
}
}
创建传参对象
public class TestParam {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
3.使用事件监听
@Autowired
private ApplicationEventPublisher publisher;
public String test(String str){
TestParam param = new TestParam();
param.setStr(str);
publisher.publishEvent(new TestEvent(param));
return "";
}
@Autowired
private ApplicationEventMulticaster eventMulticaster;
//另一种使用方法
public String test1(String str){
TestParam param = new TestParam();
param.setStr(str);
eventMulticaster.multicastEvent(new TestEvent(param));
return "";
}
参考路径:SpringBoot源码分析(三):SpringBoot的事件分发机制_springboot 监听器_MengFly_的博客-CSDN博客