观察者模式:spring的事件监听

Posted 我爱看明朝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式:spring的事件监听相关的知识,希望对你有一定的参考价值。

观察者模式:spring的事件监听

之前,我在设计模式专栏里写过观察者模式,感兴趣的同学,可以去看看。

spring为我们提供了事件监听机制,可以帮助我们解耦代码。

监听机制由3部分组成:

事件: 继承ApplicationEvent类,可以自定义自己的事件消息
事件发布者: 通过ApplicationEventPublisher发布事件,分离业务,把业务传递给其他模块下游业务
事件监听者: 处理传播过来的事件


事件发布者--------事件--------->事件监听者

实现事件

/**
 * @author xuelongjiang
 * @description 自定义事件监听器
 **/
public class MyEvent extends ApplicationEvent 
    // 我们自定义的事件消息
    private String msg;

    public MyEvent(Object source, String msg) 
        super(source);
        this.msg = msg;
    

    public String getMsg() 
        return msg;
    

    public void setMsg(String msg) 
        this.msg = msg;
    



事件发布者

/**
 * @author xuelongjiang109
 * @description 事件发布器
 **/
@Component
public class EventDeal 

    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;

    // 发布事件
    public void publish(String msg) 
        MyEvent myEvent = new MyEvent(this, msg);
        applicationEventPublisher.publishEvent(myEvent);
    


事件监听者

    // 任意bean里都可以

    //方法级,可以一个bean里,处理多个不同的事件,便于统一管理
    @EventListener
    public void dealEvent(MyEvent myEvent) 
        System.out.println("监听到事件:" + myEvent.getMsg());
    

总的来说,自定义事件比较简单。对于@EventListenerd注解spring通过cglib动态代理调用执行。
重要的是,我们要运用观察者这种设计模式,在我们的设计开发中,使我们的系统更加的可插拔、高内聚,低耦合。

以上是关于观察者模式:spring的事件监听的主要内容,如果未能解决你的问题,请参考以下文章

扒去Spring事件监听机制的外衣,竟然是观察者模式

扒去Spring事件监听机制的外衣,竟然是观察者模式

扒去Spring事件监听机制的外衣,竟然是观察者模式

Spring标准事件和自定义事件-观察者模式

Spring标准事件和自定义事件-观察者模式

Spring标准事件和自定义事件-观察者模式