创建一个事件
继承spring提供的通用事件ApplicationEvent实现自定义事件,也可以通过继承其他的spring提供的事件,实现一些额外的功能,比如ApplicationContextEvent
public class testEvent extends ApplicationEvent {
public testEvent(Object source) {
super(source);
}
}
创建一个监听者
可以选择实现ApplicationListener接口 或者通过 @EventListener注解的方式 监听 事件【LogEvent】,注意注解的方式比实现接口的方式能更早监听到事件,用@Order注解可以控制 监听的顺序 1-->2-->3
@Component
//public class LogListener {
public class LogListener implements ApplicationListener<logEvent>{
@Override
// @EventListener
public void onApplicationEvent(logEvent event) {
System.out.println(event.getSource()+"日志记录逻辑监听到");
}
创建一个发布者
实现ApplicationEventPublisherAware接口,调用接口里面的publishEvent方法 其实也可以通过实现ApplicationContextAware接口,直接调用applicationContext【继承了ApplicationEventPublisher】的publishEvent()方法就可以
@Component
public class publisher implements ApplicationEventPublisherAware {
ApplicationEventPublisher applicationEventPublisher ;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
//直接调用这个方法
public void publisherTest(String name){
applicationEventPublisher.publishEvent(new logEvent(name));
}
}