今天去官网查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事件发布和监控的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!