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

Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)

文章目录

        • 前言
        • 步骤
        • 测试结果

前言
  • 通过Java–业务场景:在Spring项目启动时加载Java枚举类到Redis中,我们成功将Java项目里的枚举类加载到Redis中了,接下来我们只需要写接口获取需要的枚举值数据就可以了,下面一起来编写这个接口吧。
步骤
  1. 在EnumService接口创建一个方法,负责查询枚举类的值。

    public interface EnumService {/*** 获取枚举类* 支持通过field模糊查询* * @param field redis hash 存储中 的 field(HashMap中的key)* @return 枚举类*/Map<String, List<EnumDto>> getEnumValues(String field);//其他方法....
    }
    
  2. 在EnumServiceImpl中实现getEnumValues方法。

    @Service
    @Slf4j
    public class EnumServiceImpl implements EnumService {@Autowiredprivate RedisOperation redisOperation;@Overridepublic Map<String, List<EnumDto>> getEnumValues(String field) {Map<String, List<EnumDto>> returnObj = new HashMap<>();Map<Object, Object> obj;if (StringUtils.isBlank(field)) {//获取所有枚举类的信息obj = redisOperation.hgetAll(RedisKeyConstant.SYSTEM_ENUMS_CACHE_KEY);} else {//下面是针对需要进行模糊匹配进行的查询obj = redisOperation.hscan(RedisKeyConstant.SYSTEM_ENUMS_CACHE_KEY, field);}obj.forEach((redisKey, val) ->returnObj.put((String) redisKey, (ArrayList) val));return returnObj;}
    }
    
  3. 下面给出EnumServiceImpl中出现的一些RedisOperation中的方法代码

    @Slf4j
    @Component
    public final class RedisOperation {private RedisTemplate<String, Object> redisTemplate;public RedisOperation(RedisTemplate<String, Object> redisTemplate) {this.redisTemplate = redisTemplate;}/*** 返回哈希表 key 中,所有的域和值*/public Map<Object, Object> hgetAll(String key) {return redisTemplate.opsForHash().entries(key);}/*** 针对HashKey进行  field 的模糊匹配** @param key   redis的HashKey  精确匹配* @param field reidis 的HashKey中的 field 类似于java中的HashMap中的key* @return 根据精确匹配key 和 模糊匹配 field 获取存储在redis中 的 HashMap*/public Map<Object, Object> hscan(String key, String field) {Cursor<Map.Entry<Object, Object>> cursor = null;Map<Object, Object> map = new HashMap<>();try {cursor = redisTemplate.opsForHash().scan(key, ScanOptions.scanOptions().count(Integer.MAX_VALUE).match("*" + field + "*").build());while (cursor.hasNext()) {Map.Entry<Object, Object> entry = cursor.next();map.put(entry.getKey(), entry.getValue());}return map;} catch (Exception e) {log.error("redis模糊查询获取 HashMap error!", e);} finally {if (null != cursor) {cursor.close();}}return map;}//其他方法...
    }
    
  4. 在Controller里定义接口,还记得EnumInterface接口里的enumDesc()方法吧,它返回了我们定义的枚举类描述值,我们可以通过这个描述来作为下面接口的field属性,进行模糊查询。

    @RestController
    @RequestMapping("/part/util")
    public class UtilController {@Autowiredprivate EnumService enumService;@ApiOperation("获取JAVA枚举值列表")@GetMapping("/getEnumValues")public Result getEnumValues(@ApiParam(name = "field", value = "field(HashMap中的key)") @RequestParam(value = "field") String field) {return Result.ok().data(enumService.getEnumValues(field));}
    }
    
测试结果
  1. 采用postman测试结果,当输入的field为空时,返回所有枚举值:

在这里插入图片描述2. 当输入的field不为空,根据field进行模糊查询,返回结果:
在这里插入图片描述

相关文章:

Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)

文章目录 前言步骤测试结果 前言 通过Java–业务场景&#xff1a;在Spring项目启动时加载Java枚举类到Redis中,我们成功将Java项目里的枚举类加载到Redis中了&#xff0c;接下来我们只需要写接口获取需要的枚举值数据就可以了&#xff0c;下面一起来编写这个接口吧。 步骤 在…...

WPF 基础入门(资源字典)

资源字典 每个Resources属性存储着一个资源字典集合。如果希望在多个项目之间共享资源的话&#xff0c;就可以创建一个资源字典。资源字段是一个简单的XAML文档&#xff0c;该文档就是用于存储资源的&#xff0c;可以通过右键项目->添加资源字典的方式来添加一个资源字典文件…...

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑电氢耦合和碳交易的电氢能源系统置信间隙鲁棒规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这标题涉及到一个复杂的能源系统规划问题&#xff0c;其中考虑了电氢耦合、碳交易和置信间隙鲁棒规划。以下是对标题各个部分的解读&#xff1a; 电氢耦…...

ubuntu设定时间与外部ntp同步

前言 在 Ubuntu 上&#xff0c;你可以通过配置 systemd-timesyncd 服务来与外部 NTP 服务器同步系统时间。下面是设置的步骤&#xff1a; 安装 NTP 工具&#xff1a; 如果你的系统中没有安装 ntpdate 工具&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-get updat…...

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…...

控制障碍函数(Control Barrier Function,CBF) 三、代码

三、代码实现 3.1、模型 这是一个QP问题&#xff0c;所以我们直接建模 这其实还是之前的那张图&#xff0c;我们把这个大的框架带入到之前的那个小车追击的问题中去&#xff0c;得到以下的一些具体的约束条件 CLF约束 L g V ( x ) u − δ ≤ − L f V ( x ) − λ V ( x ) …...

哈希表-散列表数据结构

1、什么是哈希表&#xff1f; 哈希表也叫散列表&#xff0c;哈希表是根据关键码值(key value)来直接访问的一种数据结构&#xff0c;也就是将关键码值(key value)通过一种映射关系映射到表中的一个位置来加快查找的速度&#xff0c;这种映射关系称之为哈希函数或者散列函数&…...

C# 强制类型转换和as区别和不同使用场景

文章目录 1.强制类型转换2. as 运算符3.实例总结&#xff1a; 在C#中&#xff0c;as 和 强制类型转换&#xff08;例如 (T)value&#xff09;的主要区别在于它们处理类型转换不成功时的行为和适用场景&#xff1a; 1.强制类型转换 使用语法&#xff1a;Type variable (Type)…...

什么是 DDoS 攻击

布式拒绝服务 (DDoS) 攻击是一种恶意尝试,通过大量互联网流量淹没目标或其周围基础设施,从而破坏目标服务器、服务或网络的正常流量。 DDoS 攻击通过利用多个受感染的计算机系统作为攻击流量源来实现有效性。被利用的机器可以包括计算机和其他网络资源。 从高层来看,DDoS 攻…...

c++隐式类型转换与explicit

我们知道&#xff0c;一个float与int做运算时&#xff0c;系统会首先个int类型转换为float类型之后再进行运算&#xff0c;这种隐式类型转换也会发生在类中 看以下例子&#xff0c;定义一个类 class myTime { public:int Hour;myTime() {};myTime(int h) :Hour(h) {}; }; 在…...

BERT Intro

继续NLP的学习&#xff0c;看完理论之后再看看实践&#xff0c;然后就可以上手去kaggle做那个入门的project了orz。 参考&#xff1a; 1810.04805.pdf (arxiv.org) BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili (强推!)2023李宏毅讲解大模型鼻祖BERT&#xff0c;一小时…...

“To-Do Master“ GPTs:重塑任务管理的趣味与效率

有 GPTs 访问权限的可以点击链接进行体验&#xff1a;https://chat.openai.com/g/g-IhGsoyIkP-to-do-master 部署私人的 To-Do Master 教程&#xff1a;https://github.com/Reborn14/To-Do-Master/tree/main 引言 在忙碌的日常生活中&#xff0c;有效地管理日常任务对于提高生…...

npm安装vue,添加淘宝镜像

如果是第一次使用命令栏可能会遇到权限问题。 解决vscode无法运行npm和node.js命令的问题-CSDN博客 安装 在vscode上面的导航栏选择terminal打开新的命令栏 另外可能会遇到网络或者其他的问题&#xff0c;可以添加淘宝镜像 npm install -g cnpm --registryhttps://registry.…...

LeetCode 2707. 字符串中的额外字符

一、题目 1、题目描述 给你一个下标从 0 开始的字符串 s 和一个单词字典 dictionary 。你需要将 s 分割成若干个 互不重叠 的子字符串&#xff0c;每个子字符串都在 dictionary 中出现过。s 中可能会有一些 额外的字符 不在任何子字符串中。 请你采取最优策略分割 s &#xff…...

Js进阶31-DOM 操作专题

1. JavaScript 的组成部分&#xff1a; ECMAScript&#xff1a;简称 ES&#xff0c;它是欧洲计算机协会&#xff0c;大概每年的六月中旬定制语法规范。DOM&#xff1a;全称 Document Object Model&#xff0c;即为文档对象类型。BOM&#xff1a;全称 Browser Object Model&…...

Hive之set参数大全-4

F 指定在使用 FETCH 命令提取查询结果时的序列化/反序列化器 hive.fetch.output.serde 是 Hive 的一个配置参数&#xff0c;用于指定在使用 FETCH 命令提取查询结果时的序列化/反序列化器。 以下是一个示例&#xff1a; -- 设置 hive.fetch.output.serde 为 org.apache.had…...

竞赛保研 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…...

9.建造者模式

文章目录 一、介绍二、代码三、实际使用总结 一、介绍 建造者模式旨在将一个复杂对象的构建过程和其表示分离&#xff0c;以便同样的构建过程可以创建不同的表示。这种模式适用于构建对象的算法&#xff08;构建过程&#xff09;应该独立于对象的组成部分以及它们的装配方式的…...

简单的MOV转MP4方法

1.下载腾讯的QQ影音播放器, 此播放器为绿色视频播放器, 除了播放下载好的视频外没有臃肿无用功能 官网 QQ影音 百度网盘链接&#xff1a;https://pan.baidu.com/s/1G0kSC-844FtRfqGnIoMALA 提取码&#xff1a;dh4w 2.用QQ影音打开MOV文件 3.右下角打开影音工具箱 , 选择截取…...

YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)

一、本文介绍 本文给大家带来的改进机制是ASF-YOLO(发布于2023.12月份的最新机制),其是特别设计用于细胞实例分割。这个模型通过结合空间和尺度特征,提高了在处理细胞图像时的准确性和速度。在实验中,ASF-YOLO在2018年数据科学竞赛数据集上取得了卓越的分割准确性和速度,…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...