diff --git a/README.md b/README.md
index 7004f0e50..f58204078 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,6 @@
[]()
[]()
[]()
-[]()
> RuoYi-Vue-Plus 是基于 RuoYi-Vue 针对 `分布式集群` 场景升级(不兼容原框架)
@@ -22,7 +21,7 @@
| 原框架 | RuoYi-Vue | [RuoYi-Vue官网](http://ruoyi.vip/) | 定期同步需要的功能 |
| 前端开发框架 | Vue、Element UI | [Element UI官网](https://element.eleme.cn/#/zh-CN) | |
| 后端开发框架 | SpringBoot | [SpringBoot官网](https://spring.io/projects/spring-boot/#learn) | |
-| 容器框架 | Undertow | [Undertow官网](https://undertow.io/) | 基于 Netty 的高性能容器 |
+| 容器框架 | Undertow | [Undertow官网](https://undertow.io/) | 基于 XNIO 的高性能容器 |
| 权限认证框架 | Spring Security、Jwt | [SpringSecurity官网](https://spring.io/projects/spring-security#learn) | 支持多终端认证系统 |
| 关系数据库 | MySQL | [MySQL官网](https://dev.mysql.com/) | 适配 8.X 最低 5.7 |
| 缓存数据库 | Redis | [Redis官网](https://redis.io/) | 适配 6.X 最低 4.X |
diff --git a/pom.xml b/pom.xml
index e96836a09..0dd48a3b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,7 @@
1.5.22
4.1.2
2.2.11
+ 3.3.0
2.3
3.4.3.4
3.9.1
@@ -33,7 +34,7 @@
3.16.4
2.2.1
3.4.1
- 1.3.4
+ 1.3.5
2.3.0
@@ -114,6 +115,12 @@
+
+ cglib
+ cglib
+ ${cglib.version}
+
+
org.apache.velocity
@@ -196,29 +203,13 @@
com.yomahub
- tlog-spring-boot-configuration
+ tlog-web-spring-boot-starter
${tlog.version}
com.yomahub
- tlog-webroot
- ${tlog.version}
-
-
- javassist
- org.javassist
-
-
- guava
- com.google.guava
-
-
-
-
-
- com.yomahub
- tlog-xxl-job
+ tlog-xxljob-spring-boot-starter
${tlog.version}
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index f7ef6339d..abaf6d610 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -120,11 +120,11 @@ security:
- /*/api-docs
# druid 监控配置
- /druid/**
+ # 用户放行
+ permit-all:
# actuator 监控配置
- /actuator
- /actuator/**
- # 用户放行
- permit-all:
# 重复提交
repeat-submit:
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 68db4ccba..2111510a7 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -64,6 +64,11 @@
easyexcel
+
+ cglib
+ cglib
+
+
org.yaml
@@ -135,16 +140,6 @@
lock4j-redisson-spring-boot-starter
-
- com.yomahub
- tlog-spring-boot-configuration
-
-
-
- com.yomahub
- tlog-webroot
-
-
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
index 30d074b75..8efc9f7a0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -1,5 +1,6 @@
package com.ruoyi.common.core.domain.entity;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.TreeEntity;
@@ -65,6 +66,7 @@ public class SysMenu extends TreeEntity {
* 路由参数
*/
@ApiModelProperty(value = "路由参数")
+ @TableField("`query`")
private String query;
/**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java
index 815791bf0..6b373ffcb 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/IServicePlus.java
@@ -1,6 +1,5 @@
package com.ruoyi.common.core.mybatisplus.core;
-import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -23,14 +22,9 @@ public interface IServicePlus extends IService {
/**
* @param id 主键id
- * @param copyOptions copy条件
* @return V对象
*/
- V getVoById(Serializable id, CopyOptions copyOptions);
-
- default V getVoById(Serializable id) {
- return getVoById(id, new CopyOptions());
- }
+ V getVoById(Serializable id);
/**
* @param convertor 自定义转换器
@@ -41,14 +35,9 @@ public interface IServicePlus extends IService {
/**
* @param idList id列表
- * @param copyOptions copy条件
* @return V对象
*/
- List listVoByIds(Collection extends Serializable> idList, CopyOptions copyOptions);
-
- default List listVoByIds(Collection extends Serializable> idList) {
- return listVoByIds(idList, new CopyOptions());
- }
+ List listVoByIds(Collection extends Serializable> idList);
/**
* @param convertor 自定义转换器
@@ -64,14 +53,9 @@ public interface IServicePlus extends IService {
/**
* @param columnMap 表字段 map 对象
- * @param copyOptions copy条件
* @return V对象
*/
- List listVoByMap(Map columnMap, CopyOptions copyOptions);
-
- default List listVoByMap(Map columnMap) {
- return listVoByMap(columnMap, new CopyOptions());
- }
+ List listVoByMap(Map columnMap);
/**
* @param convertor 自定义转换器
@@ -87,14 +71,9 @@ public interface IServicePlus extends IService {
/**
* @param queryWrapper 查询条件
- * @param copyOptions copy条件
* @return V对象
*/
- V getVoOne(Wrapper queryWrapper, CopyOptions copyOptions);
-
- default V getVoOne(Wrapper queryWrapper) {
- return getVoOne(queryWrapper, new CopyOptions());
- }
+ V getVoOne(Wrapper queryWrapper);
/**
* @param convertor 自定义转换器
@@ -105,14 +84,9 @@ public interface IServicePlus extends IService {
/**
* @param queryWrapper 查询条件
- * @param copyOptions copy条件
* @return V对象
*/
- List listVo(Wrapper queryWrapper, CopyOptions copyOptions);
-
- default List listVo(Wrapper queryWrapper) {
- return listVo(queryWrapper, new CopyOptions());
- }
+ List listVo(Wrapper queryWrapper);
/**
* @param convertor 自定义转换器
@@ -139,14 +113,9 @@ public interface IServicePlus extends IService {
/**
* @param page 分页对象
* @param queryWrapper 查询条件
- * @param copyOptions copy条件
* @return V对象
*/
- PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions);
-
- default PagePlus pageVo(PagePlus page, Wrapper queryWrapper) {
- return pageVo(page, queryWrapper, new CopyOptions());
- }
+ PagePlus pageVo(PagePlus page, Wrapper queryWrapper);
/**
* @param convertor 自定义转换器
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
index e9c1f191e..4de5b326d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/core/ServicePlusImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.common.core.mybatisplus.core;
-import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -165,9 +164,9 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param id 主键ID
*/
@Override
- public V getVoById(Serializable id, CopyOptions copyOptions) {
+ public V getVoById(Serializable id) {
T t = getBaseMapper().selectById(id);
- return BeanCopyUtils.oneCopy(t, copyOptions, voClass);
+ return BeanCopyUtils.copy(t, voClass);
}
/**
@@ -176,12 +175,12 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param idList 主键ID列表
*/
@Override
- public List listVoByIds(Collection extends Serializable> idList, CopyOptions copyOptions) {
+ public List listVoByIds(Collection extends Serializable> idList) {
List list = getBaseMapper().selectBatchIds(idList);
if (list == null) {
return null;
}
- return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ return BeanCopyUtils.copyList(list, voClass);
}
/**
@@ -190,12 +189,12 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param columnMap 表字段 map 对象
*/
@Override
- public List listVoByMap(Map columnMap, CopyOptions copyOptions) {
+ public List listVoByMap(Map columnMap) {
List list = getBaseMapper().selectByMap(columnMap);
if (list == null) {
return null;
}
- return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ return BeanCopyUtils.copyList(list, voClass);
}
/**
@@ -205,9 +204,9 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
*/
@Override
- public V getVoOne(Wrapper queryWrapper, CopyOptions copyOptions) {
+ public V getVoOne(Wrapper queryWrapper) {
T t = getOne(queryWrapper, true);
- return BeanCopyUtils.oneCopy(t, copyOptions, voClass);
+ return BeanCopyUtils.copy(t, voClass);
}
/**
@@ -216,12 +215,12 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
*/
@Override
- public List listVo(Wrapper queryWrapper, CopyOptions copyOptions) {
+ public List listVo(Wrapper queryWrapper) {
List list = getBaseMapper().selectList(queryWrapper);
if (list == null) {
return null;
}
- return BeanCopyUtils.listCopy(list, copyOptions, voClass);
+ return BeanCopyUtils.copyList(list, voClass);
}
/**
@@ -231,9 +230,9 @@ public class ServicePlusImpl, T, V> extends ServiceI
* @param queryWrapper 实体对象封装操作类
*/
@Override
- public PagePlus pageVo(PagePlus page, Wrapper queryWrapper, CopyOptions copyOptions) {
+ public PagePlus pageVo(PagePlus page, Wrapper queryWrapper) {
PagePlus result = getBaseMapper().selectPage(page, queryWrapper);
- List volist = BeanCopyUtils.listCopy(result.getRecords(), copyOptions, voClass);
+ List volist = BeanCopyUtils.copyList(result.getRecords(), voClass);
result.setRecordsVo(volist);
return result;
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/excel/DefaultExcelListener.java b/ruoyi-common/src/main/java/com/ruoyi/common/excel/DefaultExcelListener.java
index f626a5e11..9936f6762 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/excel/DefaultExcelListener.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/excel/DefaultExcelListener.java
@@ -5,7 +5,7 @@ import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelAnalysisException;
import com.alibaba.excel.exception.ExcelDataConvertException;
-import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.common.utils.ValidatorUtils;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -84,7 +84,7 @@ public class DefaultExcelListener extends AnalysisEventListener implements
@Override
public void invokeHeadMap(Map headMap, AnalysisContext context) {
this.headMap = headMap;
- log.debug("解析到一条表头数据: {}", JSON.toJSONString(headMap));
+ log.debug("解析到一条表头数据: {}", JsonUtils.toJsonString(headMap));
}
@Override
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
index 8bf40d16a..0bd4a55b9 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java
@@ -1,66 +1,120 @@
package com.ruoyi.common.utils;
-import cn.hutool.core.bean.copier.BeanCopier;
-import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.extra.cglib.CglibUtil;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
/**
- * bean深拷贝工具
+ * bean深拷贝工具(基于 cglib 性能优异)
*
* @author Lion Li
*/
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class BeanCopyUtils {
/**
* 单对象基于class创建拷贝
*
- * @param source 数据来源实体
- * @param copyOptions copy条件
- * @param desc 描述对象 转换后的对象
+ * @param source 数据来源实体
+ * @param desc 描述对象 转换后的对象
* @return desc
*/
- public static V oneCopy(T source, CopyOptions copyOptions, Class desc) {
- V v = ReflectUtil.newInstanceIfPossible(desc);
- return oneCopy(source, copyOptions, v);
+ public static V copy(T source, Class desc) {
+ if (ObjectUtil.isNull(source)) {
+ return null;
+ }
+ if (ObjectUtil.isNull(desc)) {
+ return null;
+ }
+ return CglibUtil.copy(source, desc);
}
/**
* 单对象基于对象创建拷贝
*
- * @param source 数据来源实体
- * @param copyOptions copy条件
- * @param desc 转换后的对象
+ * @param source 数据来源实体
+ * @param desc 转换后的对象
* @return desc
*/
- public static V oneCopy(T source, CopyOptions copyOptions, V desc) {
+ public static V copy(T source, V desc) {
if (ObjectUtil.isNull(source)) {
return null;
}
- return BeanCopier.create(source, desc, copyOptions).copy();
+ if (ObjectUtil.isNull(desc)) {
+ return null;
+ }
+ CglibUtil.copy(source, desc);
+ return desc;
}
/**
* 列表对象基于class创建拷贝
*
- * @param sourceList 数据来源实体列表
- * @param copyOptions copy条件
- * @param desc 描述对象 转换后的对象
+ * @param sourceList 数据来源实体列表
+ * @param desc 描述对象 转换后的对象
* @return desc
*/
- public static List listCopy(List sourceList, CopyOptions copyOptions, Class desc) {
+ public static List copyList(List sourceList, Class desc) {
if (ObjectUtil.isNull(sourceList)) {
return null;
}
if (CollUtil.isEmpty(sourceList)) {
return CollUtil.newArrayList();
}
- return sourceList.stream()
- .map(source -> oneCopy(source, copyOptions, desc))
- .collect(Collectors.toList());
+ return CglibUtil.copyList(sourceList, () -> ReflectUtil.newInstanceIfPossible(desc));
+ }
+
+ /**
+ * bean拷贝到map
+ *
+ * @param bean 数据来源实体
+ * @return map对象
+ */
+ public static Map copyToMap(T bean) {
+ if (ObjectUtil.isNull(bean)) {
+ return null;
+ }
+ return CglibUtil.toMap(bean);
+ }
+
+ /**
+ * map拷贝到bean
+ *
+ * @param map 数据来源
+ * @param beanClass bean类
+ * @return bean对象
+ */
+ public static T mapToBean(Map map, Class beanClass) {
+ if (MapUtil.isEmpty(map)) {
+ return null;
+ }
+ if (ObjectUtil.isNull(beanClass)) {
+ return null;
+ }
+ return CglibUtil.toBean(map, beanClass);
+ }
+
+ /**
+ * map拷贝到bean
+ *
+ * @param map 数据来源
+ * @param bean bean对象
+ * @return bean对象
+ */
+ public static T mapToBean(Map map, T bean) {
+ if (MapUtil.isEmpty(map)) {
+ return null;
+ }
+ if (ObjectUtil.isNull(bean)) {
+ return null;
+ }
+ return CglibUtil.fillBean(map, bean);
}
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
index 1e27f2494..bc38eedd5 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
@@ -1,5 +1,7 @@
package com.ruoyi.common.utils;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.lang.management.ManagementFactory;
@@ -12,6 +14,7 @@ import java.util.Date;
*
* @author ruoyi
*/
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static String YYYY = "yyyy";
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
deleted file mode 100644
index 3309da14e..000000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package com.ruoyi.common.utils;
-
-import cn.hutool.core.collection.CollUtil;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.entity.SysDictData;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 字典工具类
- *
- * @author ruoyi
- * @deprecated 3.5.0 版本删除 迁移至 {@link com.ruoyi.common.core.service.DictService}
- */
-@Deprecated
-public class DictUtils {
-
- /**
- * 分隔符
- */
- public static final String SEPARATOR = ",";
-
- /**
- * 设置字典缓存
- *
- * @param key 参数键
- * @param dictDatas 字典数据列表
- */
- public static void setDictCache(String key, List dictDatas) {
- RedisUtils.setCacheObject(getCacheKey(key), dictDatas);
- }
-
- /**
- * 获取字典缓存
- *
- * @param key 参数键
- * @return dictDatas 字典数据列表
- */
- public static List getDictCache(String key) {
- List dictDatas = RedisUtils.getCacheObject(getCacheKey(key));
- if (StringUtils.isNotNull(dictDatas)) {
- 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 datas = getDictCache(dictType);
-
- if (StringUtils.containsAny(dictValue, separator) && CollUtil.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();
- }
- }
- }
- return StringUtils.stripEnd(propertyString.toString(), separator);
- }
-
- /**
- * 根据字典类型和字典标签获取字典值
- *
- * @param dictType 字典类型
- * @param dictLabel 字典标签
- * @param separator 分隔符
- * @return 字典值
- */
- public static String getDictValue(String dictType, String dictLabel, String separator) {
- StringBuilder propertyString = new StringBuilder();
- List datas = getDictCache(dictType);
-
- if (StringUtils.containsAny(dictLabel, separator) && CollUtil.isNotEmpty(datas)) {
- for (SysDictData dict : datas) {
- for (String label : dictLabel.split(separator)) {
- if (label.equals(dict.getDictLabel())) {
- propertyString.append(dict.getDictValue() + separator);
- break;
- }
- }
- }
- } else {
- for (SysDictData dict : datas) {
- if (dictLabel.equals(dict.getDictLabel())) {
- return dict.getDictValue();
- }
- }
- }
- return StringUtils.stripEnd(propertyString.toString(), separator);
- }
-
- /**
- * 删除指定字典缓存
- *
- * @param key 字典键
- */
- public static void removeDictCache(String key) {
- RedisUtils.deleteObject(getCacheKey(key));
- }
-
- /**
- * 清空字典缓存
- */
- public static void clearDictCache() {
- Collection keys = RedisUtils.keys(Constants.SYS_DICT_KEY + "*");
- RedisUtils.deleteObject(keys);
- }
-
- /**
- * 设置cache key
- *
- * @param configKey 参数键
- * @return 缓存键key
- */
- public static String getCacheKey(String configKey) {
- return Constants.SYS_DICT_KEY + configKey;
- }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
index b65c23dc8..1c01912a3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
@@ -21,14 +21,18 @@ import java.util.Map;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class JsonUtils {
- private static ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
+ private static final ObjectMapper OBJECT_MAPPER = SpringUtils.getBean(ObjectMapper.class);
+
+ public static ObjectMapper getObjectMapper() {
+ return OBJECT_MAPPER;
+ }
public static String toJsonString(Object object) {
if (StringUtils.isNull(object)) {
return null;
}
try {
- return objectMapper.writeValueAsString(object);
+ return OBJECT_MAPPER.writeValueAsString(object);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
@@ -39,7 +43,7 @@ public class JsonUtils {
return null;
}
try {
- return objectMapper.readValue(text, clazz);
+ return OBJECT_MAPPER.readValue(text, clazz);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -50,7 +54,7 @@ public class JsonUtils {
return null;
}
try {
- return objectMapper.readValue(bytes, clazz);
+ return OBJECT_MAPPER.readValue(bytes, clazz);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -61,7 +65,7 @@ public class JsonUtils {
return null;
}
try {
- return objectMapper.readValue(text, typeReference);
+ return OBJECT_MAPPER.readValue(text, typeReference);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -72,7 +76,7 @@ public class JsonUtils {
return null;
}
try {
- return objectMapper.readValue(text, new TypeReference