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

Spring事件处理

Spring事件处理

  • 1、核心概念
  • 2、线程模型
  • 3、监听上下文事件
  • 4、自定义事件


💖The Begin💖点点关注,收藏不迷路💖

1、核心概念

  • ApplicationContext:Spring的核心容器,负责管理Bean的生命周期,并支持事件的发布与监听。
  • 内置事件:Spring提供了多种内置事件,如ContextRefreshedEventContextStartedEvent等,用于在Bean的生命周期关键节点触发。

2、线程模型

  • 默认同步执行:默认情况下,事件监听器会在发布事件的同一线程中同步执行。但Spring也支持异步事件监听器的配置。

3、监听上下文事件

  • 实现ApplicationListener:创建一个类实现ApplicationListener接口,并重写onApplicationEvent方法来处理特定类型的事件。
@Component  
public class MyContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {  @Override  public void onApplicationEvent(ContextRefreshedEvent event) {  // 处理事件  System.out.println("上下文已被刷新!");  }  
}

4、自定义事件

  • 定义事件类:通过继承ApplicationEvent或其子类来定义自己的事件类型。
public class MyCustomEvent extends ApplicationEvent {  private String message;  public MyCustomEvent(Object source, String message) {  super(source);  this.message = message;  }  public String getMessage() {  return message;  }  
}
  • 创建监听器:实现ApplicationListener接口,并指定监听的事件类型,在onApplicationEvent方法中处理事件。
@Component  
public class MyCustomEventListener implements ApplicationListener<MyCustomEvent> {  @Override  public void onApplicationEvent(MyCustomEvent event) {  System.out.println("接收到带有消息的自定义事件: " + event.getMessage());  }  
}
  • 发布事件:使用ApplicationContextpublishEvent方法发布自定义事件,让注册的监听器进行处理。
@Autowired  
private ApplicationContext applicationContext;  public void publishCustomEvent() {  MyCustomEvent event = new MyCustomEvent(this, "Hello, Spring Events!");  applicationContext.publishEvent(event);  
}

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖
http://www.lryc.cn/news/420236.html

相关文章:

  • 软设之安全防范体系
  • 【Python】PyWebIO 初体验:用 Python 写网页
  • OrangePi AIpro学习3 —— vscode开发昇腾DVPP程序
  • redis的数据结构与对象
  • ARM 汇编语言基础
  • c语言小知识点小计
  • 《C#面向语言版本编程》C# 13 中的新增功能
  • 0成本通过Hugo和GitHub Pages搭建博客
  • Ollama 可以玩 GLM4和CodeGeeX4了
  • 浅析C++指针与引用的关系
  • Python面试宝典第31题:字符串反转
  • 【深入理解SpringCloud微服务】深入理解微服务中的远程调用,并手写一个微服务RPC框架
  • 数据结构----二叉树
  • 通过python管理mysql
  • Run the OnlyOffice Java Spring demo project in local
  • 11. Rancher2.X部署多案例镜像
  • 探索Linux世界之Linux环境开发工具的使用
  • 探索Spring Boot微服务架构的最佳实践
  • [论文泛读]zkLLM: Zero Knowledge Proofs for Large Language models
  • vscode插件中的图标怎么设置
  • Study--Oracle-08-oracle数据库的闪回技术
  • 获取客户端真实IP
  • 韩式告白土味情话-柯桥生活韩语学习零基础入门教学
  • Linux安全与高级应用(一)深入探讨Linux安全与高级应用
  • 【nginx 第二篇章】各个环境安装 nginx
  • 在Spring Boot和MyBatis-Plus项目中,常见的错误及其解决方法2.0
  • 招聘信息数据清洗
  • 机器学习——支持向量机(SVM)(1)
  • Elastic Observability 8.15:AI 助手、OTel 和日志质量增强功能
  • Unity3D ECS架构的优缺点详解