34

同じプロパティ名を持つ 2 つの 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;
   ....................
4

4 に答える 4

73

使用BeanUtils:

import org.apache.commons.beanutils.BeanUtils;

UserBean newObject = new UserBean(); 
BeanUtils.copyProperties(newObject, oldObject);
于 2013-11-04T11:17:03.157 に答える
5

オブジェクトからオブジェクトへのマッピング フレームワークであるDozer Frameworkを確認してください。アイデアは次のとおりです。

  • 通常、慣例に従ってマッピングされます。
  • この規則は、マッピング ファイルでオーバーライドできます。

. . したがって、マッピング ファイルは可能な限りコンパクトになります。ユースケース指定サービスペイロードを再利用可能なコアモデルオブジェクトにマッピングするなど、多くの場合に役立ちます。

SpringSource トレーニング コースを提供するとき、私たちはこのフレームワークを頻繁に指摘していました。

編集:

最近はMapStructを試してみてください。

于 2013-11-04T05:11:43.273 に答える
1

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 にプロパティ値をコピーします。

于 2013-11-04T02:14:19.260 に答える
0

プロパティ値を設定および取得するには、Java リフレクションを使用します。プロパティ値へのアクセスを行う Spring Bean プロパティ util があります。Javaリフレクションをお勧めします。

于 2013-11-04T02:17:11.590 に答える