[开端]JAVA抽象类使用到redis观察着

embedded/2024/12/22 9:05:48/

一、绪论

当redis内容发生变化时需要通知一些观察者做一些动作怎么做?

二、JAVA抽象类

java">public abstract class AbstractRedisChangeListener {public abstract void change(String key, String value, String crudType);
}

使用abstract进行修饰一个类

其中抽象类 可以定义抽象方法

 public abstract void change(String key, String value, String crudType);

也是需要abstract来修饰,而且抽象类不需要有方法体{}

 这样我们就相当于制定了一个自定义的类型。

三、监听redis是否有变化

java">@Service
public class RedisExtendService {private List<AbstractRedisChangeListener> listeners;/*** redis 数据变化时通知观察者* @param key* @param value*/public void redisDataChange(String key, String value, String crudType) {if(CollUtil.isEmpty(listeners)) {return;}for (AbstractRedisChangeListener listener : listeners) {listener.change(key, value,crudType);}}/*** 添加观察者,项目上类启动时添加* @param listener*/public void addListener(AbstractRedisChangeListener listener) {if(listeners == null) {listeners = new ArrayList<>();}listeners.add(listener);}
}

 if(listeners == null) {
            listeners = new ArrayList<>();
        }
        listeners.add(listener);

创建了观察者列表 


http://www.ppmy.cn/embedded/93283.html

相关文章

S3Gaussian运行笔记

1. 环境配置 conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda12.1 -c pytorch -c nvidiagit clone https://github.com/nnanhuang/S3Gaussian.git --recursive cd S3Gaussian conda create -n S3Gaussian python3.9 conda activate S3Gaussianpi…

element plus el-select修改后缀图标

使用 element plus 提供的api 默认为&#xff1a; 修改后为&#xff1a; 方法&#xff1a; <el-select v-model"value" placeholder"Select" size"large" style"width: 120px;":teleported"false" :suffix-icon"…

WINDOWS搭建nps/npc服务器

下载 Releases ehang-io/nps GitHub 解压、安装 解压后&#xff0c;执行&#xff1a; nps install 配置 来到安装目录C:\Program Files\nps 编译conf/nps.conf&#xff0c;只保留以下内容&#xff1a; appname nps #Boot mode(dev|pro) runmode pro##bridge bridge…

VueTreeselect自定义label

插槽 使用插槽 //node.raw&#xff1a;所有传入的数据项<treeselectv-model"areaCode":options"deptOptions":normalizer"normalizer"><div slot"value-label" slot-scope"{ node }">{{ node.raw.title }}<…

springboot整合springmvc使用外置的Servlet容器

目录 1. 创建2. 配置3. 配置Tomcat4. 心得 1. 创建 2. 配置 首先创建两个文件夹 配置&#xff1a; 3. 配置Tomcat 右上角的按钮 添加 保证这几个不冲突&#xff0c;保证你的tomcat的文件没问题&#xff01;&#xff01;&#xff01; 点击部署 选择第二个war exploded…

微信小程序实现上传照片功能

案例&#xff1a; html: <view class"zhengjianCont fontSize30" style"margin-bottom: 40rpx;"><view class"kuai"><image binderror"imageOnloadError" bind:tap"upladPhoto" data-params"business…

【React学习】React框架下实现浅拷贝与深拷贝

1. 浅拷贝与深拷贝 浅拷贝 只复制对象的第一层属性&#xff0c;对于嵌套对象或数组&#xff0c;复制的是引用而不是值。例如&#xff0c;使用 Object.assign 或 spread 操作符&#xff08;...&#xff09;创建的拷贝是浅拷贝。 const original { a: 1, b: { c: 2 } }; const…

网络药理学:autodock tool(mgltools)实现大分子蛋白(PDB ID已知)和小分子配体的分子快速实践流程总结

前言 本篇文章的详情位于&#xff1a;http://t.csdnimg.cn/E8sHZ 这里是快速实践的流程总结版&#xff08;正文步骤都需要在autodock tools中进行&#xff09;。 前置准备&#xff1a; pocasa预测大分子蛋白并下载PDB格式文件&#xff1a;https://g6altair.sci.hokudai.ac.jp…