观察者设计模式 - 事件监听

HeJin小于 1 分钟Spring全家桶SpringBoot精讲细讲

事件

/**
 * @Desc 定义事件
 * @Author HeJin
 * @Date 2021/5/11 17:16
 */
public class MsgEvent extends ApplicationEvent {
    public MsgEvent(Object source) {
        super(source);
    }
}

事件的监听

EmailListener

@Component
public class EmailListener implements ApplicationListener<MsgEvent> {
    @Override
    public void onApplicationEvent(MsgEvent orderEvent) {
        String source = (String) orderEvent.getSource();
        System.out.println("开始发邮件:" + source);
    }
}

SmsListener

@Component
public class SmsListener implements ApplicationListener<MsgEvent> {
    @Override
    public void onApplicationEvent(MsgEvent orderEvent) {
        String source = (String) orderEvent.getSource();
        System.out.println("开始发短信:" + source);
    }
}

发布事件

@RestController
public class UserController implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    @RequestMapping("/api/getMsg")
    public String getMsg(){
        applicationContext.publishEvent(new MsgEvent("张三下单了"));
        return "观察者设计模式";
    }
}

访问接口/api/getMsg

image-20210511173623665
image-20210511173623665