项目介绍
深度拷贝的常见实现整合,便于后期拓展。
特性
-  基于 FastJson 实现 
-  基于 JackJson 实现 
-  基于 GSON 实现 
-  基于 FST 实现 
-  基于 JsonIter 实现 
-  基于 Hession 实现 
快速开始
环境准备
JDK 7+
Maven 3.x
maven 导入
<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>deep-copy-all</artifactId>
    <version>0.0.1</version>
</dependency> 
工厂类
可以直接通过 DeepCopyFactory 工厂类获取对应的实现,如下:
| 实现 | 说明 | 备注 | 
|---|---|---|
| fastJson() | fast json 实现 | |
| jackson() | jackson 实现 | |
| gson() | google json 实现 | |
| fst() | fst 实现 | 需要实现 Serializable | 
| hession() | hession 实现 | 需要实现 Serializable | 
| jsonIter() | json iter 实现 | 
单个模块
默认引入上面的所有实现,当前你可以只引入单独的模块。
maven 坐标中的 artifactId 的 deep-copy-* 如下:
| 实现 | 说明 | 
|---|---|
| fastjson | fast json 模块 | 
| jackson | jackson 模块 | 
| gson | google json 模块 | 
| fst | fst 模块 | 
| hession | hession 模块 | 
| jsoniter | json iter 模块 | 
可以自己的需要单独引入,比如只引入 fastjson 依赖:
<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>deep-copy-fastjson</artifactId>
    <version>0.0.1</version>
</dependency> 
自定义
自定义的方式只需要 2 步:
(1)引入 api 依赖
<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>deep-copy-api</artifactId>
    <version>0.0.1</version>
</dependency> 
(2)实现对应的接口
实现对应的 IDeepCopy 接口即可,以 FastJson 实现为例:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.houbb.deep.copy.api.AbstractDeepCopy;
/**
 * FastJson 深度拷贝实现
 * @author binbin.hou
 * @since 0.0.1
 */
public class FastJsonDeepCopy extends AbstractDeepCopy {
    @Override
    @SuppressWarnings("unchecked")
    protected <T> T doDeepCopy(T object) {
        final Class<?> clazz = object.getClass();
        String jsonString = JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
        return (T) JSON.parseObject(jsonString, clazz);
    }
} 
Benchmark
相同对象,循环 10w 次性能对比图。
ROAD-MAP
- 自己实现
 JarCasting
 JarCasting