java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot @EventListener

SpringBoot事件监听器@EventListener的实现

作者:只想早点下班

@EventListener注解用于处理应用程序事件,提供了一种方便的方式来监听和响应各种事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.概述

2.事件驱动架构基础

3.使用示例

import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    private final ApplicationEventPublisher eventPublisher;

    public UserService(ApplicationEventPublisher eventPublisher) {
        this.eventPublisher = eventPublisher;
    }

    public void registerUser(User user) {
        // 实际的用户注册逻辑,如保存用户信息到数据库等
        //...
        // 注册成功后发布事件
        UserRegisteredEvent event = new UserRegisteredEvent(this, user);
        eventPublisher.publishEvent(event);
    }
}
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class WelcomeEmailListener {
    @EventListener
    public void sendWelcomeEmail(UserRegisteredEvent event) {
        User user = event.getUser();
        // 发送欢迎邮件的逻辑,如调用邮件发送服务
        System.out.println("发送欢迎邮件给用户: " + user.getEmail());
    }
}

4.事件监听器的灵活性和配置

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

@Component
public class MultipleEventListener {
    @EventListener
    public void handleEvents(UserRegisteredEvent userEvent, OrderPlacedEvent orderEvent) {
        if (userEvent!= null) {
            System.out.println("处理用户注册事件");
            // 用户注册事件相关逻辑
        }
        if (orderEvent!= null) {
            System.out.println("处理订单放置事件");
            // 订单放置事件相关逻辑
        }
    }
}
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;

@Configuration
@EnableAsync
public class AsyncConfig {
    // 配置类内容
}
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component
public class AsyncEventListener {
    @Async
    @EventListener
    public void handleAsyncEvent(UserRegisteredEvent event) {
        // 异步执行的逻辑,如发送短信通知等,不会阻塞主线程
        System.out.println("异步处理用户注册事件");
    }
}

5.SpringBoot内置的监听器

import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class ApplicationReadyEventListener implements ApplicationListener<ApplicationReadyEvent> {
    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        System.out.println("应用程序已准备好,可以开始接收请求啦!");
        // 在这里可以进行数据库连接检查、缓存预热等操作
        // 例如,这里加载一些redis缓存啦。什么什么的.......
    }
}

到此这篇关于SpringBoot事件监听器@EventListener的实现的文章就介绍到这了,更多相关SpringBoot @EventListener内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文