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

这篇具有很好参考价值的文章主要介绍了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 {
        @Autowired
        private RedisOperation redisOperation;
    
        @Override
        public 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 {
        @Autowired
        private 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为空时,返回所有枚举值:

java实现启动加载指定接口下的枚举类,Spring,spring,java
2. 当输入的field不为空,根据field进行模糊查询,返回结果:
java实现启动加载指定接口下的枚举类,Spring,spring,java文章来源地址https://www.toymoban.com/news/detail-823942.html

到了这里,关于Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中(补充)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot】Spring Boot自动加载机制:简化应用程序的启动

    在微服务盛行的今天,快速搭建和启动应用程序变得至关重要。Spring Boot作为Java生态系统中主流的框架,其自动加载机制使得开发者能够快速构建和启动应用程序。本文将详细介绍Spring Boot的自动加载机制,并通过代码示例加以说明。 首先,我们要了解Spring Boot自动加载机制

    2024年02月11日
    浏览(34)
  • 31、Spring容器启动时,为什么先加载BeanFactoryPostProcess

    因为BeanDefinition会在ioc容器加载的时候先注册, 而BeanFactoryPostProcess就是在所有的BeanDefinition注册完后做扩展的,所以要先加载BeanFactoryPostProcess 解析配置类的组件 它就实现BeanFactoryPostProcess, 所以要先去加载BeanFactoryPostProcess 方式一:通过BeanFactory获取 方式二 :通过BeanFactor

    2024年02月04日
    浏览(41)
  • Spring Boot 项目设计业务操作日志功能,写得太好了!

    很久以前都想写这篇文章,一直没有空,但直到现在我对当时的情景还有印象,之所以有印象是因为需求很简单,业务操作日志的记录与查询的功能,但是具体实现真的很烂,具体的烂法会在反面示例里细说,领导以及客户层面很认可,一系列迷之操作,让我印象深刻。 客户

    2024年02月11日
    浏览(40)
  • vue项目成功启动但页面加载不出来

    vue项目成功启动但页面加载不出来,网上找了好久,都不对; 1。页面空白        2.路由地址错误          3.为加路由占位符         4地址多写‘/’等都不是   最后才发现时我把routes写成了routers

    2024年02月14日
    浏览(41)
  • Java开发面试题目场景业务提问第十六章:常问日常必备_JAVA_面试题集(含答案)【王大师】

    往期文章   第 十 章 日常_JAVA_面试题集10(含答案)  第十三章:日常_JAVA_面试题集13(含答案)  第十二章:日常_JAVA_面试题集12(含答案)  第十一章:日常_JAVA_面试题集11(含答案)  往期文章大全……

    2024年02月08日
    浏览(49)
  • 项目实训--Unity多人游戏开发(十一、PUN框架--游戏场景篇(加载与同步))

    本地加载 有许多方法,举几个例子: 本地加载 本地异步加载(场景内容过多时,防止卡顿异步加载) 多人游戏加载场景 pun2插件加载 这个异步加载起初是觉得场景内容如果过多会引起卡顿。所以把这个应用在了单机模式上。 至于多人游戏加载场景,可能用不到而且也没法

    2024年02月01日
    浏览(59)
  • 【java】【项目实战】[外卖五]菜品管理业务开发

    目录 一、文件上传与下载 1.1 文件上传介绍 1.2 文件下载介绍 1.3 文件上传代码实现 1.3.1 新增upload.html 1.3.2 修改application.yml  1.3.3 CommonController 1.3.4  功能测试 1.4 文件下载代码实现  1.4.1  CommonController 1.4.2  功能测试 二、新增菜品 2.1 需求分析 2.2 数据模型 2.3 代码实现 2.3.

    2024年02月11日
    浏览(42)
  • springboot 项目启动不打印spring 启动日志

    今天项目遇到一个很奇怪的问题,服务在启动时,不打印spring 的启动日志。经过排查发现是因为其他的依赖引入了 log4j 的依赖,因为我们的项目用的是logback,所以项目中没有log4j 的相关配置,所以干扰到了日志的打印 下面是log4j缺失配置文件的告警日志: log4j:WARN No append

    2024年02月11日
    浏览(56)
  • spring elasticsearch:启动项目时自动创建索引

    在springboot整合spring data elasticsearch项目中,当索引数量较多,mapping结构较为复杂时,我们常常希望启动项目时能够自动创建索引及mapping,这样就不用再到各个环境中创建索引了 所以今天咱们就来看看如何自动创建索引 如股票使用的是spring data elasticsearch包,其 @Document 注解中

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包