Spring 中的事件驱动模型

事件驱动的基本了解

事件模式也就是观察者模式,当一个对象改变的时候,所有依赖的对象都会收到一个通知。

Subject:抽象主题

Observer:具体主题

Concrete Subject:抽象观察者,在得到更新通知之后去更新自己。

Concrete Observer:一个具体观察者,去实现抽象观察者的定义

Spring事件驱动模型的组成和应用

先定义一个事件,也就是一个类继承ApplicationEvent这个是Spring下的

之后定义一个推送事件的一个消息

在定义一个监听者,在发送消息后监听者会收到消息发送,然后进行处理。

它有两实现方式

第一种是实现ApplicationListener

第二种通过添加注解实现@EventListener,这个可以添加参数也可以不添加,这个主要是看你对那个事件更感兴趣。如果有参数则有且只有一个参数。

创建一个新的类用于事件发布,它有两种方式

第一种ApplicationContext注入到工厂。

第二种就是ApplicationEventPublisher直接注入即可。

如果需要使用异步操作则还需要自己定义一个线程池进行使用。

先创建一个配置类,去使用线程池。

在里面定义线程池

之后在方法上面添加一个@Bean设置参数为eventAsyncTaskExecutor。

定义好了之后回到之前的两个方法里面去指定线程池。

常见的Spring内建事件

创建一个内部事件的一个监听。

这个是在Spring初始化刷新时触发的,也就是所有的Bean都被加载,如果需要监听就添加上@EventListener这个注解,没有添加参数是自动识别的。

这个是Spring容器关闭时会触发。

这个是在Spring运行完毕并且准备接受请求时会触发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32补充——IAP

0 前置知识: FLASH相关内容:前往STM32补充——FLASH STM32三种烧录方式(看看就行): 1.ISP:In System Programming(在系统编程) 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…

k8s的CICD实施项目

环境需求: 目前领导需要做一个需求,临时把我从运维岗位,把我调度到到专家组让我主导cicd的项目实施 目前环境资源 k8s环境,28台服务器,上面是k8s集群,要实施一个测试环境的cicd以及一个生产环境的cicd gitl…

【线性代数】基础版本的高斯消元法

[精确算法] 高斯消元法求线性方程组 线性方程组 考虑线性方程组, 已知 A ∈ R n , n , b ∈ R n A\in \mathbb{R}^{n,n},b\in \mathbb{R}^n A∈Rn,n,b∈Rn, 求未知 x ∈ R n x\in \mathbb{R}^n x∈Rn A 1 , 1 x 1 A 1 , 2 x 2 ⋯ A 1 , n x n b 1…

AIGC视频生成模型:Runway的Gen系列模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Runway开发的视频生成模型Gen系列,包括Gen-1、Gen-2和Gen3 Alpha等,这些模型每次发布都震惊AI圈,荣获多个视频生成的…

【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例

在Java应用程序的性能调优和故障排查中,jmap(Java Memory Map)是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况,生成堆转储文件(Heap Dump),并查看内存中的对象分布。无论是内…

【基于无线电的数据通信链】Link 11 仿真测试

〇、废话 Link 11 仿真测试 涉及多个方面,包括信号仿真、协议模拟、数据链路层的仿真以及网络性能评估等。Link 11 是一种基于 HF(高频) 或 UHF(超高频) 波段的无线通信协议,主要用于军事通信系统中。为了…

AG32 FPGA 的 Block RAM 资源:M9K 使用

1. 概述 AG32 FPGA 包含了 4 个 M9K 块,每个 M9K 块的容量为 8192 bits,总计为 4 个 M9K(4K bytes)。这使得 AG32 的内部存储非常适合嵌入式应用,能够有效地利用片上资源。 M9K 参数 参考自《AGRV2K_Rev2.0.pdf》。…

【算法笔记】力扣热题100(LeetCode hot-100)438. 找到字符串中所有字母异位词 滑动窗口

力扣热题100(LeetCode hot-100)之 438. 找到字符串中所有字母异位词 本文主要记录算法思路,着急要答案的同学可以直接跳转到最后的代码。 题目 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子…

【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 单例模式(Singleton Pattern)是一种常见的设计模式,它确保一个类只有一个实例&…

Hadoop•搭建完全分布式集群

听说这里是目录哦 一、安装Hadoop🥕二、配置Hadoop系统环境变量🥮三、验证Hadoop系统环境变量是否配置成功🧁四、修改Hadoop配置文件🍭五、分发Hadoop安装目录🧋六、分发系统环境变量文件🍨七、格式化HDFS文…

【机器人学】2-3.六自由度机器人运动学逆解-工业机器人【附MATLAB代码】

解析解推导 假设有一工业机器人参数如下图所示: matlab代码 clc;clear; %带入机器人初始值 d1 0.670; d4 1.280; d6 0.215;a2 0.312; a3 1.075; a4 0.225;Position[288.1, -433.1, 2832,96.9158, -29.6162, 109.3547]; px Position(1)/1000; py Positio…

ARM学习(42)CortexM3/M4 MPU配置

笔者之前学习过CortexR5的MPU配置,现在学习一下CortexM3/M4 MPU配置 1、背景介绍 笔者在工作中遇到NXP MPU在访问异常地址时,就会出现总线挂死,所以需要MPU抓住异常,就需要配置MPU。具体背景情况可以参考ARM学习(41)NXP MCU总线挂死,CPU could not be halted以及无法连…

HTML语言的数据结构

HTML语言的数据结构 引言 HTML(超文本标记语言)是构建网页的标准语言。尽管HTML本身不是一种编程语言,它为我们提供了一种结构化的信息表示方法,使得网页内容能够有序地展现给用户。HTML的核心在于其标记(标签&#…

PIC单片机HEX文件格式分析

在调试PIC单片机在bootloader程序时,需要将hex文件转换为bin文件,在转换之前先了解一下hex文件中数据是如何定义的。 直接打开一个LED灯闪烁的程序生成的hex文件,芯片型号为PIC18F46K80 可以看到每条数据都是由6部分组成的,下面分…

利用Kubespray安装生产环境的k8s集群-实施篇

如何安装生产环境下的高可用k8s集群 接上篇 规划k8s集群 本次我预备了6台VMs, 1台作为Jump server,用来部署Ansible并负责在其他5台设备上部署k8s。这台服务器后续可能还要做nfs server。 3台做master,为了给etcd做高可用。(Et…

SQL中字符串截取函数(substring)

1.left(name,4)截取左边的四个字符 案例 select left(20240428,4) 结果 2024 2.right(name,2)截取右边的2个字符 案例 select right(20240428,2) 结果 28 3.substring(name,5,3)截取name这个字段从第五个字…

用户中心项目教程(四)---Vue脚手架完成前端初始化

目录 1.项目的创建 2.使用开发工具打开 3.项目运行方法 4.使用按钮组件 5.全局注册 6.如何进行组件的测试 7.使用组件的效果展示 8.关于这个vue项目内容的说明 1.项目的创建 这个前提你是你完成了我的教程(三)里面的相关配置,不然你可…

【GitHub】登录时的2FA验证

一、如何进行2FA认证 1.在你的浏览器中下载 Authenticator身份验证插件 2.使用身份验证器添加凭证 2.1 使用身份验证器扫描验证二维码 选择扫描二维码

目标跟踪算法发展简史

单目标跟踪(Single Object Tracking,SOT)是计算机视觉领域中的一个重要研究方向,旨在在视频序列中持续定位并跟踪一个特定目标。随着计算机视觉和机器学习技术的飞速发展,单目标跟踪算法经历了从经典方法到深度学习的演…

Flink 使用 Kafka 作为数据源时遇到了偏移量提交失败的问题

具体的错误日志 21:43:57.069 [Kafka Fetcher for Source: Custom Source -> Map -> Filter (1/1)#2] ERROR org.apache.kafka.clients.consumer.internals.ConsumerCoordinator - [Consumer clientIdconsumer-my-group-6, groupIdmy-group] Offset commit failed on pa…