Bean拷贝】的更多相关文章

Bean拷贝工具类性能比较 引言 几年前做过一个项目,接入新的api接口.为了和api实现解耦,决定将api返回的实体类在本地也建一个.这样做有两个好处 可以在api变更字段的时候保持应用稳定性 可以对返回的实体的属性做处理,以提高可读性.例如接口返回long类型的时间戳,则将该字段在本地实体类中对应字段设置为date类型方便使用. 大致是这样的一个应用场景.当时刚毕业,充斥的都是A.setName(B.getName)这种类型的代码.当字段非常多的时候看起来非常臃肿,最重要的给人感觉不优雅.…
在做业务的时候,我们有时为了隔离变化,会将DAO查询出来的Entity,和对外提供的DTO隔离开来.大概90%的时候,它们的结构都是类似的,但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代码,于是我们需要BeanCopier来帮助我们.选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下. BeanCopier基本用法 pu…
前言 这次新建了一个工程,因为 Lombok 用得很习惯,但以前的话,一般只用了@Data,@AllArgsConstructor,@EqualsAndHashCode等常规注解:那这个Accessors(chain = true)注解是干嘛的呢? 用了这个注解后,生成的set方法是这样的: #加了Accessors(chain = true) public Devolution setCenterId(Long centerId) { this.centerId = centerId; ret…
Apache BeanUtils Spring BeanUtils cglib BeanCopier Hutool BeanUtil Mapstruct Dozer 1.Apache  BeanUtils: 在Bean中具有相同名称的属性分别是基本数据类型和包装类时,比如分别是int和Integer时,可以正常进行拷贝,在拷贝中,如果存在引用对象,那么使用的是浅拷贝. 使用===========>BeanUtils.copyProperties(orderDTO,orderPO);[第一个是目标…
相当于C#的AutoMapper public class CloneUtils { /** * 拷贝对象 * @param source * @param classType * @return */ public static <T, E> E clone(T source, Class<E> classType) { if (source == null) { return null; } E targetInstance; try { targetInstance = cl…
最近面试被问及对象拷贝怎样才能高效,实际上问的就是Orika或者BeanCopier的原理.由于网上对Orika原理的解析并不太多-因此本文重点讲解一下Orika的原理.(Orika是基于JavaBean规范的属性拷贝框架,所以不了解什么是JavaBean的话请先百度) 首先,先纠正一下一些网上的错误说法,Java反射慢,所以要使用Orika基于Javasisst效率更好,我要说明的是Orika的整个流程是需要使用到Java的反射的,只是在真正拷贝的属性的时候没有使用反射.这里先简单讲解一下Or…
背景 Bean的拷贝一直有一些类可以使用,比如Apache的org.apache.commons.beanutils.BeanUtils或者Spring的org.springframework.beans.BeanUtils. 根据定义的白名单字段进行Bean的拷贝 我需要一个只拷贝我指定的字段的Bean拷贝,而Spring的org.springframework.beans.BeanUtils提供如下几个方法: 其中第2.3个是可以指定属性的,第2个指定可以通过Class指定,基本满足我的需求…
1.   概述 commons-beanutil开源库是apache组织的一个基础的开源库.为apache中很多类提供工具方法.学习它是学习其它开源库实现的基础. Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java反射机制来完毕代码中所须要的功能,而不须要具体研究反射的原理和使用,同一时候,该类库中提出了动态Bean的概念,不但提供现有JavaBean的全部功能,并且还能够在执行时动态的对Bean中的属性数据类型进行改动以及增删属性. 本文…
1.   概述 commons-beanutil开源库是apache组织的一个基础的开源库.为apache中很多类提供工具方法.学习它是学习其它开源库实现的基础. Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java反射机制来完毕代码中所须要的功能,而不须要具体研究反射的原理和使用,同一时候,该类库中提出了动态Bean的概念,不但提供现有JavaBean的全部功能,并且还能够在执行时动态的对Bean中的属性数据类型进行改动以及增删属性. 本文…
统一响应格式 Response类 @JsonInclude(JsonInclude.Include.NON_NULL) public class Response<T> implements Serializable { private Integer code; private String msg; private T data; public Response() { this.code = AppHttpCodeEnum.SUCCESS.getCode(); this.msg = Ap…