SpringBoot 项目创建 EventListener (监听事件)

本文详细介绍了Java中的监听器如何实现解耦、事件驱动和跨组件通信,特别是在SpringBoot中使用ApplicationListener和@EventListener注解创建和触发事件的过程。
摘要由CSDN通过智能技术生成

在Java中,监听器(Listener)是一种设计模式,它允许对象在 特定事件 发生时 自动执行某些操作 。这种设计模式通常用于实现 发布-订阅模型 ,其中监听器(订阅者)订阅了某个对象(发布者)的事件,当该事件发生时,监听器会收到通知并执行相应的操作。

监听器的作用

  • 解耦:通过监听器,可以将 事件发送者事件处理者 解耦,使得两者之间的依赖关系降低。
  • 事件驱动:监听器允许程序以 事件驱动 的方式运行,即当特定事件发生时,自动触发相应的处理逻辑。
  • 跨组件通信:在不同组件或模块之间,可以通过监听器实现通信和协作。

在Spring Boot中,可以通过实现 Spring 提供的监听器接口或注解来创建监听器。Spring提供了多种类型的监听器,包括 ApplicationListener 用于监听应用事件, @EventListener 注解用于监听特定事件等。

ApplicationEvent 是Spring框架中的一个核心类,用于在应用程序中 发布和监听事件 。它是所有Spring事件的 基类 ,一个抽象类,可以被继承来创建自定义的事件。事件可以在应用程序中的不同组件之间进行传递和通信。

ApplicationEvent 携带一个 Object 对象,可以被发布,事件监听者监听到这个事件后,会触发自定义逻辑(操作Object对象)。是实现事件驱动编程的重要机制,通过事件和监听器的协作,可以实现不同组件之间的解耦和高效通信。

实现 ApplicationListener 监听事件

1、创建 CustomEvent 事件类

import org.springframework.context.ApplicationEvent;

public class CustomEvent extends ApplicationEvent { // CustomEvent需要继承自ApplicationEvent

    private String message;

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

    public String getMessage() {
        return message;
    }
}

2、自定义监听器,监听事件类

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class CustomEventListener implements ApplicationListener<CustomEvent> {

    @Override
    public void onApplicationEvent(CustomEvent event) {
        // 当CustomEvent事件被发布时,这个方法会被调用
        System.out.println("监听事件成功 - " + event.getMessage());
        // 在这里编写处理事件的逻辑
        // 比如对消息进行合规处理
    }
}

3、触发监听事件

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class EventPublisher {

    private final ApplicationContext applicationContext;

    @Autowired
    public EventPublisher(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    public void publishCustomEvent(String message) {
    	// 发布CustomEvent
        CustomEvent customEvent = new CustomEvent(this, message);
        applicationContext.publishEvent(customEvent);
    }
}

publishCustomEvent 方法被调用并发布 CustomEvent 时,所有实现了 ApplicationListener<CustomEvent> 的监听器都会收到通知,并执行onApplicationEvent方法。

使用 @EventListener 注解监听事件

如果你想要使用注解来创建监听器,可以使用@EventListener注解:

import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class AnnotationBasedEventListener {

    @EventListener
    public void handleCustomEvent(CustomEvent event) {
        // 当CustomEvent事件被发布时,这个方法会被调用
        System.out.println("监听事件成功 - " + event.getMessage());
        // 在这里编写处理事件的逻辑
        // 比如对消息进行合规处理
    }
}

使用 @EventListener 注解可以简化监听器的创建过程,并且可以在 方法级别上 指定需要监听的事件类型。

无论是通过实现接口还是使用注解,Spring Boot都提供了以实现事件驱动的应用程序逻辑。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值