项目介绍
深度拷贝的常见实现整合,便于后期拓展。
特性
-
基于 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
- 自己实现