当前位置: 首页 > news >正文

【spring中event】事件简单使用

  1. 定义事件类
/*
* 1. 定义事件类
* 首先,我们创建一个自定义事件 UserRegisteredEvent,用于表示用户注册事件。
* */
public class UserRegisteredEvent extends ApplicationEvent {private final String email;public UserRegisteredEvent(Object source, String email) {super(source);this.email = email;}public String getEmail() {return email;}
}
  1. 创建事件发布器
@Service
public class UserService {private final ApplicationEventPublisher publisher;public UserService(ApplicationEventPublisher publisher) {this.publisher = publisher;}public void registerUser(String email) {// 这里可以添加用户注册逻辑,比如保存到数据库System.out.println("User registered: " + email);/** 2. 创建事件发布器* 我们创建一个服务类 UserService,* 在用户注册时发布 UserRegisteredEvent。* */// 发布用户注册事件publisher.publishEvent(new UserRegisteredEvent(this, email));}
}
  1. 创建事件监听器
/*
* 3. 创建事件监听器
* 然后,我们创建一个监听器 EmailService,在收到 UserRegisteredEvent 时发送欢迎邮件。
* */
@Component
public class EmailService {@EventListenerpublic void onUserRegistered(UserRegisteredEvent event) {String email = event.getEmail();// 这里模拟发送邮件System.out.println("Sending welcome email to: " + email);}
}

4、启动类

@SpringBootApplication
public class MytestApplication implements CommandLineRunner {@Autowiredprivate UserService userService;public static void main(String[] args) {SpringApplication.run(MytestApplication.class, args);}@Overridepublic void run(String... args) {// 模拟用户注册userService.registerUser("user@example.com");}
}

相关文章:

  • 【MySQL】数据目录迁移
  • 前端 vue3 对接科大讯飞的语音在线合成API
  • 详细指南:如何有效解决Windows系统中msvcp140.dll丢失的解决方法
  • 【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU
  • spark计算引擎-架构和应用
  • git 基本原理
  • 【项目开发】跨专业合作平台实战(附源码)
  • 初学51单片机之I2C总线与E2PROM二
  • c语言基础作业
  • YOLO11关键改进与网络结构图
  • mysql学习教程,从入门到精通,SQL 修改表(ALTER TABLE 语句)(29)
  • 负载均衡--会话保持失败原因及解决方案(五)
  • Python:lambda 函数详解 以及使用
  • JMeter 性能测试基本过程及示例
  • 【测试】混沌工程
  • 【Linux系统编程】快速查找errno错误码信息
  • 2019.2.20 c++ 知识梳理
  • HashMap剖析之内部结构
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Js基础知识(一) - 变量
  • mac修复ab及siege安装
  • MySQL QA
  • vue--为什么data属性必须是一个函数
  • 将 Measurements 和 Units 应用到物理学
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 算法-图和图算法
  • 算法之不定期更新(一)(2018-04-12)
  • 探索 JS 中的模块化
  • 新书推荐|Windows黑客编程技术详解
  • 源码安装memcached和php memcache扩展
  • 【云吞铺子】性能抖动剖析(二)
  • 正则表达式-基础知识Review
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • (¥1011)-(一千零一拾一元整)输出
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四) 虚拟摄像头vivi体验
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)可以带来幸福的一本书
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .gitattributes 文件
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET CLR Hosting 简介
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET6 命令行启动及发布单个Exe文件
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET业务框架的构建
  • @31省区市高考时间表来了,祝考试成功
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大