【发布时间】:2015-05-31 14:11:35
【问题描述】:
哪种方法需要最少的自己编写的代码来实现一个 bean 到另一个 bean 的深拷贝?目标是在源属性和目标属性按名称匹配时以自动方式执行此操作。
源主 bean:
public class SourceBean {
private String beanField;
private SourceNestedBean nestedBean;
// getters and setters
}
源嵌套 bean:
public class SourceNestedBean {
private String nestedBeanField;
// getters and setters
}
目标主 bean:
public class TargetBean {
private String beanField;
private TargetNestedBean nestedBean;
// getters and setters
}
目标嵌套 bean:
public class TargetNestedBean {
private String nestedBeanField;
// getters and setters
}
使用例如Spring BeanUtils.copyProperites() 我可以用一行代码创建一个SourceBean 到TargetBean 的浅拷贝,但它不会复制嵌套的bean。是否有任何成熟的实用程序(不一定是 Spring Framework)可以在尽可能少地编写自己的代码(与 BeanUtils.copyProperties() 几乎相同)的同时进行深度复制?
【问题讨论】:
-
使用序列化做深拷贝
-
@TheLostMind 我认为这只有在他们是同一个班级时才有效。
-
@M.Deinum 不完全是。您提到的问题是一个更通用的问题(bean 映射),而我需要的是用尽可能少的设置代码以非常简单的方式克隆
by filed name -
@TheLostMind 该副本是从
SourceBean类的对象到TargetBean类的对象,它们没有共同的祖先。 -
@RealSkeptic 你是对的,序列化不是一个选项,因为我们在谈论两个不同的类
标签: java spring javabeans spring-bean