1.概述
事件在应用中非常重要,包括事件的发送与接受。事件机制一般使用观察者模式实现, 在spring中,我们能够容易的使用事件
2.事件的使用
2.1 创建一个状态改变的事件
@Data
public class State {
private int state;
}
public class StateChangeEvent<T> extends ApplicationEvent {
private T data;
public StateChangeEvent(T source) {
super(source);
this.data=source;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
2.2发布事件
State state = new State();
state.setState(10);
// 发布事件,事件源为Context
StateChangeEvent stateChangeEvent = new StateChangeEvent(applicationContext);
stateChangeEvent.setData(state);
applicationContext.publishEvent(stateChangeEvent);
2.3 事件监听
2.3.1 实现ApplicationListener监听消息
@Component
@Slf4j
public class ContextStateChangeListener implements ApplicationListener<StateChangeEvent> {
@Override
public void onApplicationEvent(StateChangeEvent stateChangeEvent) {
log.info("onApplicationEvent 状态改变==>>{}",stateChangeEvent.getData());
}
}
2.3.2 注解方式监听
@Component
@Slf4j
public class StateChangeListener {
@EventListener
public void stateListener(StateChangeEvent<State> stateChangeEvent){
log.info("stateListener 状态改变==>>{}",stateChangeEvent.getData());
}
}
分享到: