diff --git a/README.md b/README.md
index b4ef294..90e1fe3 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,16 @@
一个开箱即用的快速开发平台.JAVA版
### 🍿 传送门
-vboot在线体验传送门 [http://zsvg.gitee.io/vboot](http://zsvg.gitee.io/vboot)
+* 在线体验传送门:[http://zsvg.gitee.io/vboot](http://zsvg.gitee.io/vboot)
+* QQ交流群传送门:[795417789](https://jq.qq.com/?_wv=1027&k=yoKKIlIG) 暂时就几个人哦,哈哈
### 🍟 概述
-
* 基于JAVA实现的快速开发平台。模块化插件式开发,前后端分离,开箱即用。
* 后台基于SpringBoot框架,数据库访问使用Jpa,自动生成数据库表结构。
* 前端基于Vben-Admin vxe-table框架。
* 核心模块包括:部门、用户、岗位、群组、角色、菜单、字典、日志、文件管理、定时任务等功能。
-* QQ交流群:[795417789] 暂时就几个人哦,哈哈
* .NET6实现的同功能项目地址[https://gitee.com/zsvg/vboot-net](https://gitee.com/zsvg/vboot-net) 两个项目会同步开发
+* 前端代码项目地址:[https://gitee.com/zsvg/vboot-vben](https://gitee.com/zsvg/vboot-vben)
```
如果对您有帮助,点击右上角⭐Star⭐关注 ,感谢支持开源!
```
diff --git a/vboot-application/src/main/java/com/abc/Application.java b/vboot-application/src/main/java/com/abc/Application.java
index 296453e..16e2fcd 100644
--- a/vboot-application/src/main/java/com/abc/Application.java
+++ b/vboot-application/src/main/java/com/abc/Application.java
@@ -11,6 +11,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.scheduling.annotation.EnableAsync;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -21,6 +22,7 @@ import java.net.UnknownHostException;
@ComponentScan({"com.zsvg","com.abc"})
@EnableJpaRepositories({"com.zsvg","com.abc"})
@Slf4j
+@EnableAsync
//@EnableSwagger2
public class Application {
diff --git a/vboot-core/pom.xml b/vboot-core/pom.xml
index 8465053..5ed8aa5 100644
--- a/vboot-core/pom.xml
+++ b/vboot-core/pom.xml
@@ -110,10 +110,10 @@
org.springframework.boot
spring-boot-starter-security
-
- org.springframework.session
- spring-session-data-redis
-
+
+
+
+
diff --git a/vboot-core/src/main/java/com/zsvg/vboot/common/util/lang/JsonUtils.java b/vboot-core/src/main/java/com/zsvg/vboot/common/util/lang/JsonUtils.java
new file mode 100644
index 0000000..720db25
--- /dev/null
+++ b/vboot-core/src/main/java/com/zsvg/vboot/common/util/lang/JsonUtils.java
@@ -0,0 +1,78 @@
+package com.zsvg.vboot.common.util.lang;
+
+import cn.hutool.core.util.ArrayUtil;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.zsvg.vboot.common.util.web.XspringUtil;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class JsonUtils {
+
+ private static ObjectMapper objectMapper = XspringUtil.getBean(ObjectMapper.class);
+
+
+ public static T parseObject(String text, Class clazz) {
+ if (StringUtils.isEmpty(text)) {
+ return null;
+ }
+ try {
+ return objectMapper.readValue(text, clazz);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static T parseObject(byte[] bytes, Class clazz) {
+ if (ArrayUtil.isEmpty(bytes)) {
+ return null;
+ }
+ try {
+ return objectMapper.readValue(bytes, clazz);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static T parseObject(String text, TypeReference typeReference) {
+ if (StringUtils.isBlank(text)) {
+ return null;
+ }
+ try {
+ return objectMapper.readValue(text, typeReference);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static Map parseMap(String text) {
+ if (StringUtils.isBlank(text)) {
+ return null;
+ }
+ try {
+ return objectMapper.readValue(text, new TypeReference