java bean对象之间复制属性

标签: java bean 对象 | 发表时间:2014-11-21 00:29 | 作者:jacking124
出处:http://www.iteye.com

在现在的企业级Java应用程序中, Java Bean被广泛的应用。 一堆的相关的划分也应运而生, 如DTO, DAO, BO, POJO, VO等。这里不去管这些概念的细节, 如果你感兴趣,可以google之, 比如 这篇文章。 这里要讨论的问题是如何在不同的Java Bean对象之间复制它们的属性?
这有几种情况需要考虑:

    • 源对象和目标对象的类型可能不同
    • 只想复制部分的对象
    • 要复制的对象的属性名字不同
    • 如何实现深复制 (deep copy)?



目前有几个Bean copy库可以使用:

Dozer
Dozer是一个功能强大的Bean复制库。 你可以通过Annotation, API或者XML定义Map规则。 XML是最简单,修改方便,非侵入的方式。
除了最简单不同类型,不同属性名称的转换外, Dozer还支持:

    • 不同类型属性之间的转换,如字符串转为日期类型。 或者定制的类型转换
    • 枚举类型
    • 集合属性复制,并且支持Array,List,Set之间的转换
    • Map类型的转换
    • 索引属性
    • 深拷贝
    • 部分复制
    • 单向复制
    • 表达式

除此之外, 它还提供了Spring, JMX, JAXB的集成。

如果,实际上大部分,我们不需要这么强大的功能。 比如我们可能只是需要一个clone的功能。 你可以考虑使用 Apache common-beanutils和Spring BeanUtils类。

Apache common-beanutils
BeanUtils 类提供了两个转换方法:

static void copyProperties(Object dest, Object orig)
static void copyProperty(Object bean, String name, Object value)

 
第二个方法用来复制一个特定的属性。
属性名字必须一样, 类型不一样可能执行默认的数据转换。 执行浅复制。

它还提供了一个clone方法。

static Object cloneBean(Object bean)

Spring BeanUtils
Spring BeanUtils提供了更多的功能。

static void copyProperties(Object source, Object target)
Copy the property values of the given source bean into the target bean.
static void copyProperties(Object source, Object target, Class<?> editable)
Copy the property values of the given source bean into the given target bean, only setting properties defined in the given "editable" class (or interface).
static void copyProperties(Object source, Object target, String... ignoreProperties)
Copy the property values of the given source bean into the given target bean, ignoring the given "ignoreProperties".

 
你可以指定要复制的属性 (第二种方法)或者排除部分属性(第三种方法)



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java bean 对象] 推荐:

java bean对象之间复制属性

- - Java - 编程语言 - ITeye博客
在现在的企业级Java应用程序中, Java Bean被广泛的应用. 一堆的相关的划分也应运而生, 如DTO, DAO, BO, POJO, VO等. 这里不去管这些概念的细节, 如果你感兴趣,可以google之, 比如 这篇文章. 这里要讨论的问题是如何在不同的Java Bean对象之间复制它们的属性.

Java中如何获取Spring中配置的bean

- - CSDN博客推荐文章
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 二、如何在程序中获取Spring配置的bean呢. 方法一:在初始化时保存ApplicationContext对象. 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况.

使用Java注解进行Spring bean管理

- - 编程语言 - ITeye博客
原文链接: http://www.ibm.com/developerworks/cn/webservices/ws-springjava/. 使用 Java 配置进行 Spring bean 管理. 学习使用 Java 配置管理 Spring bean. Spring bean 是使用传统的 XML 方法配置的.

自己动手实现springboot运行时执行java源码(运行时编译、加载、注册bean、调用)

- - 掘金 后端
  看来断点、单步调试还不够硬核,根本没多少人看,这次再来个硬核的. 依然是由于apaas平台越来越流行了,如果apaas平台选择了java语言作为平台内的业务代码,那么不仅仅面临着IDE外的断点、单步调试,还面临着为了实现预览效果,需要将写好的java源码动态的装载到spring容器中然后调用源码内的某个方法.

Java的对象驻留

- - Java译站
Java会将源代码中的字符串常量存储到常量池中. 这不只是说它俩的值是一样的,而是说就是同一个字符串对象. 用Java的话来说就是a==b的结果是true. 然而这个只对字符串以及小的整型或者长整型有效. 其它的对象是不会被驻留的,也就是说如果你创建了两个对象而他们的值是相等的,但他们并不是同一个对象.

理解Java对象序列化

- - 博客 - 伯乐在线
来源: jiangshapub 的博客( @jiangshapub). 关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结. 此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制. 在撰写本文时,既参考了 Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助.

java 类和对象的初始化

- - Web前端 - ITeye博客
  在Java中,类装载器把java类装载到虚拟机中,经过装载,链接和初始化三个步骤来完成. 其中链接中包括 校验、准备和解析. 下面对这些概念进行解析:. 装载:查找和导入类或接口的二进制数据,常用的是根据类的路径加载,还有根据网络的地址加载. 链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的;.

Spring bean生命周期

- - 开源软件 - ITeye博客
Spring bean生命周期.       在传统的Java应用中,Bean的生命周期非常简单.  Java的关键词new用来实例化Bean(或许他是非序列化的).  相反,Bean的生命周期在Spring容器中更加细致.  理解Spring Bean的生命周期非常重要,因为你或许要利用Spring提供的机会来订制Bean的创建过程.

[Json]json-lib简单处理java对象变为json对象

- - CSDN博客编程语言推荐文章
由于js对json的原生支持,所以现在很多项目的数据传输都喜欢用json. 怎么样把数据从java对象转化为json对象,有怎么把前台的json对象转化成java对象去处理. json-lib是sourceforge的一个开源项目,常用来解决java json数据转换的问题. 下载地址是 http://sourceforge.net/projects/json-lib/.

JAVA内存使用--如何计算一个Java对象占用的字节数

- - Java - 编程语言 - ITeye博客
转自(http://blog.csdn.net/kp034/article/details/7077757). 通常,我们谈论的堆内存使用的前提是以“一般情况”为背景的. 1.某些情况下,JVM根本就没有把Object放入堆中. 例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中.