Spring基础篇:自定义事件与监听器

简介: Spring的事件与监听器

事件与监听器用来做什么?

发布/订阅模式来,某个事件发布后,订阅该事件的人将自动去执行特定的操作。

例子:我关注了UP主,当UP主更新视频的时候,我就会被通知到。

Spring为实现这样的操作,做了什么

Spring为了实现这样的操作,以事件驱动和监听器展现。它提供了

  • 事件:定义一个被监听的事件。
  • 广播器:可以广播事件(IOC容器本身作为了一个广播器)。
  • 监听器:可以监听事件。

在Spring中可以这样理解例子:

【监听器】关注了【监听动作】UP主,当UP主更新【事件发布】视频【事件】的时候,我【监听器】就会被通知【广播器广播】到。

通过这个例子,那么我们可以锁定学习的核心了,我们需要学习

  • 怎样定义事件
  • 怎样通过广播器去发布事件
  • 怎样写一个监听器去监听事件

以一个例子展开

我关注了UP主,当UP主更新视频的时候,我就会被通知到。

定义事件

通过继承ApplicationEvent的方式,自定义一个NewVideoEvent事件。假设这是一个视频发布的事件

public class NewVideoEvent extends ApplicationEvent {
    public NewVideoEvent(Object source) {
        super(source);
    }
}

Service层操作业务

我们在Service层中将这个事件通过广播器去发布,也就是当UP主更新视频的时候,广播事件。

  • 第一步:实现ApplicationEventPublisherAware拿到广播器。

    • 该操作会让我们重写一个setApplicationEventPublisher方法,通过set就明白我们需要对一个成员属性进行赋值,而这个成员属性就是ApplicationEventPublisher,广播器。
  • 第二步:在业务操作后,通过ApplicationEventPublisher对象,调用publishEvent,将事件发布。
@Service
public class Up implements ApplicationEventPublisherAware {
    private ApplicationEventPublisher applicationEventPublisher;

    public void publishVideo(){
        // 发布视频的操作
        System.out.println("发布视频");
        // 发布事件
        applicationEventPublisher.publishEvent(new NewVideoEvent("视频"));
    }
    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.applicationEventPublisher = applicationEventPublisher;
    }

}

监听器监听业务层发布的事件,并操作

它有两种操作方式:注解的方式实现接口的方式

通过注解的方式

@EventListener:直接在方法上放上该直接即可,记得将它交给Spring容器管理,方法参数要放上监听的事件。

@Component
public class AnnoEventListener {
    @EventListener
    public void ListenNewVideoEvent(NewVideoEvent event){
        System.out.println("你关注的UP主更新视频啦");
    }
}

通过实现接口的方式

implements ApplicationListener<事件类型>

@Component
public class ImplEventListener implements ApplicationListener<NewVideoEvent> {
    @Override
    public void onApplicationEvent(NewVideoEvent event) {
        System.out.println("你关注的UP更新视频啦");
    }
}
目录
相关文章
|
7月前
|
Web App开发 监控 Java
|
18天前
|
缓存 安全 Java
Spring高手之路26——全方位掌握事务监听器
本文深入探讨了Spring事务监听器的设计与实现,包括通过TransactionSynchronization接口和@TransactionalEventListener注解实现事务监听器的方法,并通过实例详细展示了如何在事务生命周期的不同阶段执行自定义逻辑,提供了实际应用场景中的最佳实践。
40 2
Spring高手之路26——全方位掌握事务监听器
|
2月前
|
设计模式 Java Spring
Spring Boot监听器的底层实现原理
Spring Boot监听器的底层实现原理主要基于观察者模式(也称为发布-订阅模式),这是设计模式中用于实现对象之间一对多依赖的一种常见方式。在Spring Boot中,监听器的实现依赖于Spring框架提供的事件监听机制。
33 1
|
7月前
|
NoSQL Java Redis
Spring Boot 监听 Redis Key 失效事件实现定时任务
Spring Boot 监听 Redis Key 失效事件实现定时任务
146 0
|
4月前
|
缓存 Java 数据库
Spring Boot中使用监听器
系统的介绍了监听器原理,以及在 Spring Boot 中如何使用监听器,列举了监听器的三个常用的案例,有很好的实战意义。最后讲解了项目中如何自定义事件和监听器,并结合微服务中常见的场景,给出具体的代码模型,均能运用到实际项目中去,希望读者认真消化。
|
6月前
|
监控 NoSQL Java
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
在 Spring Boot 中实现 Redis 的发布/订阅功能可以通过 RedisTemplate 和消息监听器来完成
329 1
|
7月前
|
Java Spring
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
flowable 监听器无法获取spring bean ,自动注入bean为null,解决方案
|
7月前
|
NoSQL Java Redis
Spring boot 实现监听 Redis key 失效事件
【2月更文挑战第2天】 Spring boot 实现监听 Redis key 失效事件
638 0
|
7月前
spring-state-machine监听器
spring-state-machine监听器
49 0
下一篇
DataWorks