利用Spring中自带的观察者模式,监听去做一些类似消息推送,短信通知等功能

情景:利用jpush推送给客户端订单确认收货时的通知:

一:创建要被监听的事件对象

/**
 * @describe: 订单确认收货事件
 * author: liutengyuan
 * @date: Created in 2019/1/18 18:23
 **/
public class OrderConfirmReceieveEvent extends ApplicationEvent {

    public OrderConfirmReceieveEvent(Object source) {
        super(source);
    }

    private long orderId;
    private long userId;
    private String content;


    public long getOrderId() {
        return orderId;
    }

    public void setOrderId(long orderId) {
        this.orderId = orderId;
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }


}

二:创建监听器,监控事件对象

/**
 * @describe: 监听器
 * author: liutengyuan
 * @date: Created in 2019/1/18 18:26
 **/
@Component
public class OrderConfrimReceieveListener implements ApplicationListener<OrderConfirmReceieveEvent> {

 private Logger logger = LoggerFactory.getLogger(OrderConfrimReceieveListener.class);


    @Autowired
    JpushService jpushService;

    @Override
    public void onApplicationEvent(OrderConfirmReceieveEvent event) {
        System.out.println("订单确认收货监听事件。。。");
        logger.info("订单确认收货监听事件执行");
        jpushService.sendWaitRefundOrSuccessMsgToUser(event.getOrderId(),event.getUserId(), ORDER_FINISHED, event.getContent());
    }
}

三:业务代码中调用

	OrderConfirmReceieveEvent event = new OrderConfirmReceieveEvent("");
	ApplicationContext applicationContext = SpringBeanContextUtil.getApplicationContext();
	event.setOrderId(orderId);
	event.setUserId(orderInfo.getUserId());
	event.setContent(content);
	applicationContext.publishEvent(event);

其他:也可以监听一些类似Spring容器启动等事件

/**
 * @describe: Spring容器监听功能
 * author: liutengyuan
 * @date: Created in 2019/1/21 14:05
 **/
@Component
public class StartUpListerner implements ApplicationListener<ContextStartedEvent> {
    @Override
    public void onApplicationEvent(ContextStartedEvent event) {
        System.out.println("spring 容器初始化....");
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值