核心原理:观察者模式
1、定义事件类型
public class MyEvent{
// 可以添加自定义的方法或属性
//如 id ,省略get/set/toString
private Integer xxxId;
}
2、定义事件监听器
@Component
public class MyListener {
@Async
// TransactionPhase.AFTER_COMMIT:在事务提交之后,触发这个事件
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
@EventListener
public void handleEvent(MyEvent event) {
// 处理事件的逻辑
if(id <= 0) {//不符合条件直接结束
return;
}
System.out.println("Event received: " + event);
}
}
3、事件发布
@Service
public class MyService {
@Autowired
private ApplicationEventPublisher publisher;
public void doSomething() {
// 业务逻辑
MyEvent event = new MyEvent("Something done");
publisher.publishEvent(event);
}
}
事件监听器在我们平常开发中用的比较少,但是在spring源码中用的地方挺多的。