提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目的
因为根据项目需求需要进行国产化适配,redis安装在国产化系统比较麻烦,并且不能通过国产化测评,所以现在对redis进行剥离。
一、去除redis 配置
去除ruoyi-admin下application.yml的redis配置!
二、去除ruoyi-framework下RedisConfig的配置
直接注释@Bean、@Configuration和@EnableCaching注解就可以了,不用删除RedisConfig,防止后期又要使用redis,直接放开就可以了。
三、在ruoyi-common的core/redis下新建MyMapCache类
@Component
public class MyMapCache{
public ConcurrentHashMap<String, Object> concurrentHashMap = new ConcurrentHashMap<String, Object>();
/**
* 放入值
*
* @param key
* @param value
*/
public void put(String key, Object value) {
concurrentHashMap.put(key, value);
}
/**
* 取值
*
* @param key
* @return
*/
public Object get(String key) {
return concurrentHashMap.get(key);
}
/**
* 移除
*
* @param k
*/
public void remove(String key) {
concurrentHashMap.remove(key);
}
}
四、关于RedisCache类
暂时用不到,但是为了防止系统报错,暂时不需要整改和删除。
五、修改ruoyi-common下utils/DictUtils
public class DictUtils {
/**
* 分隔符
*/
public static final String SEPARATOR = ",";
/**
* 设置字典缓存
*
* @param key 参数键
* @param dictDatas 字典数据列表
*/
public static void setDictCache(String key, List<SysDictData> dictDatas) {
SpringUtils.getBean(MyMapCache.class).put(getCacheKey(key), dictDatas);
}
/**
* 获取字典缓存
*
* @param key 参数键
* @return dictDatas 字典数据列表
*/
public static List<SysDictData> getDictCache(String key) {
Object cacheObj = SpringUtils.getBean(MyMapCache.class).get(getCacheKey(key));
if (StringUtils.isNotNull(cacheObj)) {
List<SysDictData> dictDatas = StringUtils.cast(cacheObj);
return dictDatas;
}
return null;
}
/**
* 根据字典类型和字典值获取字典标签
*
* @param dictType 字典类型
* @param dictValue 字典值
* @return 字典标签
*/
public static String getDictLabel(String dictType, String dictValue) {
return getDictLabel(dictType, dictValue, SEPARATOR);
}
/**
* 根据字典类型和字典标签获取字典值
*
* @param dictType 字典类型
* @param dictLabel 字典标签
* @return 字典值
*/
public static String getDictValue(String dictType, String dictLabel) {
return getDictValue(dictType, dictLabel, SEPARATOR);
}
/**
* 根据字典类型和字典值获取字典标签
*
* @param dictType 字典类型
* @param dictValue 字典值
* @param separator 分隔符
* @return 字典标签
*/
public static String getDictLabel(String dictType, String dictValue, String separator) {
StringBuilder propertyString = new StringBuilder();
List<SysDictData> datas = getDictCache(dictType);
if (StringUtils.containsAny(separator, dictValue) && StringUtils.isNotEmpty(datas)) {
for (SysDictData dict : datas) {
for (String value : dictValue.split(separator)) {
if (value.equals(dict.getDictValue())) {
propertyString.append(dict.getDictLabel() + separator);
break;
}
}
}
} else {
for (SysDictData dict : datas) {
if (dictValue.equals(dict.getDictValue())) {
return dict.getDictLabel(