SpringBoot事件发布和监听详解

SpringBoot事件发布和监听详解

今天去官网查SpringBoot的信息,在特性里看到了系统的事件和监控章节,所以下面这篇文章主要介绍spring boot事件发布和监控的相关信息,通过示例代码介绍的非常详细,有需要的朋友可以参考一下。

目录

概述事件监控的结构。发布者、事件和侦听器事件之间的关系

发布者

班长

摘要

摘要

事件和监听器是Spring提供的事件监控和订阅的实现。内部实现原理是观察者设计模式,设计的初衷是解耦系统的业务逻辑,提高可扩展性和可维护性。事件发布者不需要考虑谁来监控,具体实现内容是什么。发布者的工作只是发布事件。事件监视的功能类似于消息队列的功能。

事件监控的结构

有三个主要部分:

出版商出版商

事件

监听器监听器

Publisher,Event和Listener的关系

事件

我们的自定义事件MyTestEvent继承了ApplicationEvent,之后必须重载构造函数,构造函数的参数可以任意指定,其中源参数是指事件发生的对象。一般我们在发布事件时用这个关键字代替这个类对象,而user参数是我们自定义注册的用户对象,可以在监控时获取。

@Getter

公共类MyTestEvent扩展ApplicationEvent {

private static final long serialVersionUID=1L;

私人用户User;

public MyTestEvent(对象源,用户用户){

超级(来源);

this.user=用户;

}

}

发布者

发布由ApplicationContext对象控制。在发布事件之前,我们需要注入ApplicationContext对象并调用publishEvent方法来完成事件发布。

虽然ApplicationEventPublisher ApplicationEventPublisher声明的是ApplicationEventPublisher,但实际注入的是applicationContext。

@RestController

@RequestMapping(/test )

公共类TestController {

@自动连线

ApplicationContext应用上下文;

@自动连线

ApplicationEventPublisher ApplicationEventPublisher;

@GetMapping(testEvent )

公共无效测试(){

applicationeventpublisher . publishevent(新MyTestEvent(dzf-casfd-111 ,新用户( dzf-625096527-111 ,小明,19));

applicationeventpublisher . publishevent(新MyTestEvent(dzf-49687489-111 ,新用户( dzf-625096527-111 ,王晓,20));

}

}

班长

面向接口编程,实现ApplicationListener接口

@组件

公共类MyTestListener实现ApplicationListenerMyTestEvent {

@覆盖

ApplicationEvent上的公共void(MyTestEvent MyTestEvent){

system . out . println( mytest listener: mytestevent . getuser());

}

}

用@EventListener注释配置

@组件

公共类MyTestListener2{

@ event listener(mytestevent . class)

ApplicationEvent上的公共void(MyTestEvent MyTestEvent){

system . out . println( mytestlistener 2: mytestevent . getuser());

}

}

总结

关于SpringBoot事件的发布和监控的这篇文章到此为止。有关SpringBoot事件发布和监控的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

SpringBoot事件发布和监听详解