观察者模式: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动态代理调用执行。
重要的是,我们要运用观察者这种设计模式,在我们的设计开发中,使我们的系统更加的可插拔、高内聚,低耦合。

猜你喜欢

转载自blog.csdn.net/u013565163/article/details/128498571