Commit bde3ad19 authored by yaobaizheng's avatar yaobaizheng

解决循环依赖 多应用使用同一个redis,存储对象,无法反序列化问题

parent 1c5b486b
......@@ -48,7 +48,7 @@ public class ResourceConfig implements WebMvcConfigurer {
String[] excludeUrl = new String[]{"/demo/login","/login/login","/weixin/login",
"/parkInfo/list",
"/developmentInfo/list","/megalopolisInfo/list",
"/treeInfo/**","/homePage/**","/sysFile/**"};
"/treeInfo/**","/homePage/**","/sysFile/**","/api/sysDictData/**"};
String[] excludePatterns = (String[]) ArrayUtils.addAll(excludeSwagger, excludeUrl);
System.out.println("自定义拦截器#############################################");
......
......@@ -337,4 +337,12 @@ public class RedisUtil {
public static boolean delHashKey(final String key,final String fileds){
return redisTemplate.opsForHash().delete(key,fileds)>0;
}
/**
* 返回哈希表 key 中,所有的域和值。
* 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
*/
public static Map<Object,Object> hGetAll(final String key){
return redisTemplate.opsForHash().entries(key);
}
}
package com.lyy.admin.domain.system;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
......@@ -70,4 +71,5 @@ public class SysDictDataEntity implements Serializable{
/** 更新时间 */
@ApiModelProperty(name = "更新时间",notes = "")
private Date updateTime ;
}
package com.lyy.admin.service.system.impl;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -58,29 +59,28 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
* @description: 通过code查询字典数据
*/
@Override
// public Map<String, List<SysDictDataEntity>> listByCodes(String code) {
public JSONObject listByCodes(String code) {
// Map<String,List<SysDictDataEntity>> map = new HashMap<>();
JSONObject jsonObject = new JSONObject();
String[] split = code.split(",");
JSONObject jsonObjectAll = JSONUtil.parseObj(RedisUtil.hGetAll(RedisConstants.DICT_DATA));
for (String s : split) {
Object value= RedisUtil.hGet(RedisConstants.DICT_DATA, s);
Object value=null;
if(ObjectUtils.isNotEmpty(jsonObjectAll)){
value = jsonObjectAll.get(s);
}
if(ObjectUtils.isNotEmpty(value)){
List<SysDictDataEntity> list = JSONUtil.toList(JSONUtil.toJsonStr(value), SysDictDataEntity.class);
// map.put(s, list);
jsonObject.putOpt(s,list);
}else {
LambdaQueryWrapper<SysDictDataEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SysDictDataEntity::getDictType, s);
List<SysDictDataEntity> list = this.list(lambdaQueryWrapper);
// map.put(s,list);
jsonObject.putOpt(s,list);
if(!CollectionUtils.isEmpty(list)){
RedisUtil.hPut(RedisConstants.DICT_DATA, s,list);
RedisUtil.hPut(RedisConstants.DICT_DATA, s,JSONUtil.toJsonStr(list));
}
}
}
// return map;
return jsonObject;
}
......
......@@ -8,8 +8,8 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.90.102.101:3306/liyeyun?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
url: jdbc:mysql://rm-2ze10ohzb1898j5qdfo.mysql.rds.aliyuncs.com:3306/liyeyun?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: liyeyun
password: CF**ldcn
# 初始连接数
initialSize: 5
......
......@@ -26,7 +26,7 @@ spring:
name: cfld-region-outline
# 配置环境切换
profiles:
active: test
active: dev
# 文件上传
servlet:
multipart:
......@@ -45,6 +45,7 @@ spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
#解决循环依赖
main:
allow-circular-references: true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment