Sping事件发布机制

一、Spring事件发布     

        Spring事件发布机制是一种非常重要的通信方式,使用观察者设计模式,可以用于状态通知、业务解耦、异步处理的业务场景。

        Spring事件发布对应的几个概念:

 1、事件及事件源(ApplicationEvent)

      对应于观察者模式中的主题,事件源发生某事件是特定事件监听器被触发的原因。Spring的ApplicationEvent是事件类,事件源soruce作为ApplicationEvent的一个属性维护,有用户自定义传入。

2、事件发布器(ApplicationEventPublisher)

       事件发布器可以认为是事件监听的容器,对外提供发布事监听器的接口,通过publishEvent方法维护事件和事件监听器之间的映射关系,并在事件发生时负责通知事件监听器。

3、事件监听器

     监听器监听事件源发布事件,由用户自行定义,使用@EventListener注解在方法上即可。

二、编码示例

1、定义事件源

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString
public class CommonSource {

    /**事件类型*/
    private int sourceType;

    /**消息体*/
    private  Object sourceData;
}

2、自定义事件

public class CommonEvent  extends ApplicationEvent {

    public CommonEvent(CommonSource source) {
        super(source);
    }

    @Override
    public CommonSource getSource() {
        return (CommonSource) source;
    }
}

3、定义事件发布器

@Component
public class CommonEventPublisher  implements ApplicationEventPublisherAware {

    private static ApplicationEventPublisher  applicationEventPublisher;

    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        CommonEventPublisher.applicationEventPublisher = applicationEventPublisher;
    }

    public static void  sendEvent(CommonEvent event) {
        CommonEventPublisher.applicationEventPublisher.publishEvent(event);
    }

}

4、事件发布与监听

      事件发布

 CommonEventPublisher.sendEvent(new CommonEvent(new CommonSource(1,"郭有才")));

     事件监听

    @EventListener
    public   void  onEvent(CommonEvent event){
        CommonSource source = event.getSource();
        System.out.println("event----source=>"+source);
        int sourceType = source.getSourceType();
        if(sourceType==1){
            /// 处理业务逻辑
        }
    }

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值