吴忠网站建设报价,app在线制作网站,网站常用的一种js的图片幻灯片特效代码,宁波江北区建设局网站文章目录 前言步骤测试结果 前言
通过Java–业务场景#xff1a;在Spring项目启动时加载Java枚举类到Redis中,我们成功将Java项目里的枚举类加载到Redis中了#xff0c;接下来我们只需要写接口获取需要的枚举值数据就可以了#xff0c;下面一起来编写这个接口吧。
步骤 在… 文章目录 前言步骤测试结果 前言
通过Java–业务场景在Spring项目启动时加载Java枚举类到Redis中,我们成功将Java项目里的枚举类加载到Redis中了接下来我们只需要写接口获取需要的枚举值数据就可以了下面一起来编写这个接口吧。
步骤 在EnumService接口创建一个方法负责查询枚举类的值供接口调用。 public interface EnumService {/*** 获取枚举类* 支持通过field模糊查询* * param field redis hash 存储中 的 field(HashMap中的key)* return 枚举类*/MapString, ListEnumDto getEnumValues(String field);//其他方法....
}在EnumServiceImpl中实现getEnumValues方法。 Service
Slf4j
public class EnumServiceImpl implements EnumService {Autowiredprivate RedisOperation redisOperation;Overridepublic MapString, ListEnumDto getEnumValues(String field) {MapString, ListEnumDto returnObj new HashMap();MapObject, 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;}
}下面给出EnumServiceImpl中出现的一些RedisOperation中的方法代码。 Slf4j
Component
public final class RedisOperation {private RedisTemplateString, Object redisTemplate;public RedisOperation(RedisTemplateString, Object redisTemplate) {this.redisTemplate redisTemplate;}/*** 返回哈希表 key 中所有的域和值*/public MapObject, 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 MapObject, Object hscan(String key, String field) {CursorMap.EntryObject, Object cursor null;MapObject, Object map new HashMap();try {cursor redisTemplate.opsForHash().scan(key, ScanOptions.scanOptions().count(Integer.MAX_VALUE).match(* field *).build());while (cursor.hasNext()) {Map.EntryObject, 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;}//其他方法...
}在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));}
}测试结果
采用postman测试结果当输入的field为空时返回所有枚举值 2. 当输入的field不为空根据field进行模糊查询返回结果