观察者模式-Spring事件机制

image.png

Spring事件机制实现观察者模式
场景:

//订单创建发送短信,邮件
public void save(OrderInfo info) {
     saveOrder(info);
     sendMessage(info);
     sendEmail(info);
     ....
}

缺点:
违背了单一职责原则和开闭原则

优化方案:
1.创建Order事件

@Data
public class OrderCreateEvent extends ApplicationEvent {
    private OrderInfo orderInfo;

    public OrderCreateEvent(OrderInfo orderInfo) {
        super(orderInfo);
        this.orderInfo = orderInfo;
    }
}

2.创建监听类,监听事件

@Slf4j
@Component
@Order(1)
public class OrderMessageListener implements ApplicationListener<OrderCreateEvent> {
    @Override
    public void onApplicationEvent(OrderCreateEvent event) {
        OrderInfo orderInfo = event.getOrderInfo();
        sendMessage(orderInfo);
    }
}

@Slf4j
@Component
@Order(2)
public class OrderEmailListener implements ApplicationListener<OrderCreateEvent> {
    @Override
    public void onApplicationEvent(OrderCreateEvent event) {
        OrderInfo orderInfo = event.getOrderInfo();
        sendEmail(orderInfo);
    }
}

3.推送事件

//订单创建发送短信,邮件
@Autowired
private ApplicationContext applicationContext;

public void save(OrderInfo info) {
     saveOrder(info);
     applicationContext.publishEvent(new OrderCreateEvent(info));
     ....
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容