From 7125916ec2d25e9a5e412cf7300f5c90dbf3ccf0 Mon Sep 17 00:00:00 2001 From: zhou-hao Date: Wed, 11 Apr 2018 23:33:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8FastBeanCopier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/factory/MapperEntityFactory.java | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java b/hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java index 32112c86c..2b4cbb572 100644 --- a/hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java +++ b/hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/factory/MapperEntityFactory.java @@ -23,6 +23,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import org.hswebframework.web.NotFoundException; import org.hswebframework.utils.ClassUtils; +import org.hswebframework.web.bean.FastBeanCopier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,9 +37,9 @@ import java.util.function.Supplier; */ @SuppressWarnings("unchecked") public class MapperEntityFactory implements EntityFactory { - private Map realTypeMapper = new HashMap<>(); - private Logger logger = LoggerFactory.getLogger(this.getClass()); - private Map copierCache = new HashMap<>(); + private Map realTypeMapper = new HashMap<>(); + private Logger logger = LoggerFactory.getLogger(this.getClass()); + private Map copierCache = new HashMap<>(); private static final DefaultMapperFactory DEFAULT_MAPPER_FACTORY = clazz -> { String simpleClassName = clazz.getPackage().getName().concat(".Simple").concat(clazz.getSimpleName()); @@ -51,11 +52,13 @@ public class MapperEntityFactory implements EntityFactory { }; private static final DefaultPropertyCopier DEFAULT_PROPERTY_COPIER = (source, target) -> { - Object sourcePar = JSON.toJSON(source); - if (sourcePar instanceof JSONObject) { - return ((JSONObject) sourcePar).toJavaObject(target.getClass()); - } - return JSON.parseObject(JSON.toJSONString(source, SerializerFeature.DisableCircularReferenceDetect), target.getClass()); + return FastBeanCopier.copy(source, target); + +// Object sourcePar = JSON.toJSON(source); +// if (sourcePar instanceof JSONObject) { +// return ((JSONObject) sourcePar).toJavaObject(target.getClass()); +// } +// return JSON.parseObject(JSON.toJSONString(source, SerializerFeature.DisableCircularReferenceDetect), target.getClass()); }; private DefaultMapperFactory defaultMapperFactory = DEFAULT_MAPPER_FACTORY; @@ -108,12 +111,6 @@ public class MapperEntityFactory implements EntityFactory { } return (T) defaultPropertyCopier.copyProperties(source, target); -// -// Object sourcePar = JSON.toJSON(source); -// if (sourcePar instanceof JSONObject) { -// return ((JSONObject) sourcePar).toJavaObject((Class) target.getClass()); -// } -// return JSON.parseObject(JSON.toJSONString(source), (Class) target.getClass()); } catch (Exception e) { logger.warn("copy properties error", e); } @@ -206,7 +203,7 @@ public class MapperEntityFactory implements EntityFactory { } public static class Mapper { - Class target; + Class target; Supplier instanceGetter; public Mapper(Class target, Supplier instanceGetter) {