美文网首页
带你自定义实现Spring事件驱动模型

带你自定义实现Spring事件驱动模型

作者: 卡斯特梅的雨伞 | 来源:发表于2022-01-12 23:24 被阅读0次

Spring 事件驱动模型概念

Spring 事件驱动模型就是观察者模式很经典的一个应用,我们可以通过Spring 事件驱动模型来完成代码的解耦。

三角色

Spring 事件驱动模型或者说观察者模式需要三个类角色来支撑完成。分表是:

  • 事件——ApplicationEvent
  • 事件监听者——ApplicationListener
  • 事件发布者——ApplicationEventPublisher,ApplicationContext

步骤

  1. 定义一个事件: 实现一个继承自 ApplicationEvent,并且写相应的构造函数;
  2. 定义一个事件监听者:实现 ApplicationListener 接口,重写 onApplicationEvent() 方法;
  3. 使用事件发布者发布消息: 可以通过 ApplicationEventPublisherpublishEvent() 方法发布消息。

代码示例

// 定义一个事件,继承自ApplicationEvent并且写相应的构造函数 注意这个事件是给发布者创建出来发送事件的,
// 所有不能加 @Component
public class MyApplicationEvent extends ApplicationEvent {

    private String message;

    public MyApplicationEvent(Object source,String message) {
        super(source);
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

}

//// 发布事件,我们依赖于spring自带的applicationContext来发布事件,applicationContext实现了ApplicationEventPublisher 接口
@Component
public class MyApplicationEventPublisher {
    @Autowired
    ApplicationContext applicationContext;

    public void publish(String message) {
        applicationContext.publishEvent(new MyApplicationEvent(this, message));
    }
}

//// 定义一个事件监听者,实现ApplicationListener接口,重写 onApplicationEvent() 方法
//注意泛型列是监听的事件类名
@Component
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {


    @Override
    public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
        System.out.println(myApplicationEvent.getMessage());
    }
}

//测试类
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class EventTest {

    @Autowired
    MyApplicationEventPublisher myApplicationEventPublisher;

    @Test
    public void test(){
        myApplicationEventPublisher.publish("hello world");
    }
    //hello world
}

参考

Spring使用的设计模式

相关文章

  • 带你自定义实现Spring事件驱动模型

    Spring 事件驱动模型概念 Spring 事件驱动模型就是观察者模式很经典的一个应用,我们可以通过Spring...

  • Spring的事件驱动模型

    Spring的事件驱动模型 事件驱动模型的三大组成部分 事件:ApplicationEvent 抽象类—继承自 J...

  • Spring事件传播机制

        Spring是基于事件驱动模型的,事件驱动模型也就是我们常说的观察者,或者发布-订阅模型。理解观察者模式更...

  • Spring事件驱动模型

    事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点: 1.首先是一种对象...

  • spring event

    spring event的事件驱动模型的最佳实践@EventListenerhttps://blog.csdn.n...

  • Spring之事件机制模型

    概述 spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用 spring事件模型提供如下的...

  • 优雅编程 - SpringEvent

    SpringEvent 事件驱动介绍 Spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用...

  • SEDA

    高并发 -多线程模型 -事件驱动模型 对请求采用事件(通常是IO事件)驱动方式处理, 其底层实现依赖于非阻塞IO和...

  • Spring的事件驱动模型

    1. 简单介绍: 事件Event驱动模型实际也被称之为观察者模式,或者发布/订阅模型。Spring中,也为我们提供...

  • Spring事件驱动模型、异步

    1,观察者(发布-订阅)模式 1)ApplicationEvent 事件ContextStartedEvent I...

网友评论

      本文标题:带你自定义实现Spring事件驱动模型

      本文链接:https://www.haomeiwen.com/subject/ojigcrtx.html