今天是:
带着程序的旅程,每一行代码都是你前进的一步,每个错误都是你成长的机会,最终,你将抵达你的目的地。
title

springboot application event

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());
    }
}

 

分享到:

专栏

类型标签

网站访问总量