【问题标题】:How to copy properties from a bean to another bean in different class? [duplicate]如何将属性从一个bean复制到不同类的另一个bean? [复制]
【发布时间】:2019-03-21 17:48:42
【问题描述】:

我有两个具有相同属性名称的java类。如何将所有属性复制到另一个填充数据的bean。我不想使用传统的形式复制属性,因为我有很多属性。

提前致谢。

1 类

@ManagedBean
@SessionScoped
public class UserManagedBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String userSessionId;
    private String userId;
    private String name;
    private String adress;
    ......................

2 类

public class UserBean {

    private String userSessionId;
    private String userId;
    private String name;
   ....................

【问题讨论】:

标签: java javabeans


【解决方案1】:

使用BeanUtils:

import org.apache.commons.beanutils.BeanUtils;

UserBean newObject = new UserBean(); 
BeanUtils.copyProperties(newObject, oldObject);

【讨论】:

  • 不是 BeanUtils.copyProperties(oldObject, newObject) 而是 BeanUtils.copyProperties(newObject, oldObject)!
  • 如果你使用的是 org.springframework.beans.BeanUtils 然后使用 BeanUtils.copyProperties(oldObject,newObject );
  • 简单格式:BeanUtils.copyProperties(DomainBean, FormBean);
【解决方案2】:

查看Dozer Framework - 它是一个对象到对象映射框架。这个想法是:

  • 通常它会按照惯例进行映射。
  • 您可以使用映射文件覆盖此约定。

。 .因此映射文件尽可能紧凑。它在许多情况下都很有用,例如将用例指定的服务负载映射到可重用的核心模型对象上。

在提供 SpringSource 培训课程时,我们经常指出这个框架。

编辑:

这几天试试MapStruct

【讨论】:

【解决方案3】:

如果您使用 Apache 的库 BeanUtils,您可以轻松做到这一点:

http://commons.apache.org/proper/commons-beanutils/

具体看copyProperties(Object, Object)

http://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html#copyProperties(java.lang.Object, java.lang.Object)

将属性值从源 bean 复制到目标 bean 属性名称相同的所有情况。

【讨论】:

    【解决方案4】:

    使用 java 反射来设置和获取属性值。有 spring bean 属性 util 可以访问属性值。我会向你推荐 java 反射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多