spring 基于事件编程 demo

在单系统中的异步调用中使用 是基于spring 的事件编程, 事件驱动模型 我们日常中 说的观察者模式.

事件驱动的几个要素

  • 事件源 只要是事件都会有一个发起的地方,负责产生事件的对象 ApplicationEventPublisher.publishEvent()
  • 事件 称之为事件对象 是发送事件的核心 继承 ApplicationEvent
  • 事件监听器 对每个事件的发生进行监听 可以继承 ApplicationListene 也可以通过注解实现

事件驱动的好处:

  • 无耦合的关联
  • 异步消息的传递
  • 发布订阅模式 多对多

代码的实现:
事件

public class HelloEvent extends ApplicationEvent {
    public HelloEvent(Object source) {
        super(source);
    }
}

事件源 这里可以通过ApplicationContext 也可以用 ApplicationEventPublisher 是继承关系 注意 要在一个事物里面

	  @Autowired
    private ApplicationContext ac;

    @Transactional
    public void order() {
        System.out.println("下單成功");
        ac.publishEvent(new HelloEvent("发布了一个事件"));
        System.out.println("main綫程執行結束");
    }

监听者 (这里可以通过继承ApplicationListener 和 TransactionalEventListener 的方式实现监听)

@Component
public class CarListener implements ApplicationListener<HelloEvent> {

    @Override
    //@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
    public void onApplicationEvent(HelloEvent helloEvent) {
        System.out.println("事件执行的方法");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值