实现ApplicationListener
步骤如下:
1.写Event类,需要继承Spring的ApplicationEvent类
2.写监听类,需要实现Spring的ApplicationListener接口,加上@Component注解
3.监听类实现onApplicationEvent方法
4.通过ApplicationContext.publishEvent(Event)发布事件
Event的代码如下:
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;
@Getter
@Setter
public class CustomEvent extends ApplicationEvent {
private String message;
public CustomEvent(Object source) {
super(source);
}
}
两个Listener的代码如下。这里定义了两个Listener,@Order定义了执行顺序,其中CustomEventListener2先执行,CustomEventListener1后执行
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@Order(2)
public class CustomEventListener1 implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
log.info ("CustomEventListener1 received: {}", JSON.toJSONString(event));
}
}
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@Order(1)
public class CustomEventListener2 implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
log.info ("CustomEventListener2 received: {}", JSON.toJSONString(event));
}
}
发布事件的方法如下:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.sp