// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents

[[BeanUtils - Commons>http://commons.apache.org/beanutils/]] はApache CommonsのライブラリでJavaBeansのプロパティをコピーする便利なメソッドなどが用意されたユーティリティです。

似たようなプロパティをもつ別のクラス、たとえばStrutsのActionFormを別のオブジェクトに移し替えるときや、DBのEntityからUI側のオブジェクトに載せ替えたいときなどに、

 SrcBean src = ...
 DestBean dest = new DestBean();
 PropertyUtils.copyProperties(dest, src);

などとするだけで、同じ名称のプロパティを移し替えてくれたりします。

**ダウンロード [#aaf0899b]
[[Beanutils Downloads>http://commons.apache.org/downloads/download_beanutils.cgi]] よりダウンロードできます。また[[Project Dependencies>http://commons.apache.org/beanutils/dependencies.html]]を見ると 
-commons-logging
-commons-collections

なども必要みたいですね。

**やってみる [#ecfb84fb]
SrcBeanのプロパティをDestBeanへ載せ替えることを考えてみます。
 package src;
 
 public class SrcBean {
   private String message;
   private boolean[] boolArray;
   private List list;
   private Map map;
   .... Getter/Setterは削除
 }

 package dest;
 
 public class DestBean {
   private String message;
   private boolean[] boolArray;
   private List list;
   private Map map;
   .... Getter/Setterは削除
  
   @Override
   public String toString() {
     return new ToStringBuilder(this).append("message", message).append(
         "booleanArray", boolArray).append("list", list).append("map",
         map).toString();
   }
 }
この例ではSrcBeanもDestBeanも同じプロパティを持っているとしています。

各プロパティの値を載せ替えるコードは以下の通りです。
 public class Main {
   public static void main(String[] args) throws IllegalAccessException,
       InvocationTargetException, NoSuchMethodException {
     SrcBean src = new SrcBean();
     src.setMessage("ほげほげ");
     boolean[] boolArray = new boolean[] { true, false, true };
     src.setBoolArray(boolArray);
 
     List<String> list = new ArrayList<String>();
     list.add("first");
     list.add("second");
     src.setList(list);
 
     Map<String, Object> map = new HashMap<String, Object>();
     map.put("name", "json");
     map.put("bool", Boolean.TRUE);
     map.put("int", new Integer(1));
     map.put("arr", new String[] { "a", "b" });
     map.put("chars", new char[] { 'a', 'b' });
     src.setMap(map);
 
     DestBean dest = new DestBean();
     PropertyUtils.copyProperties(dest, src);
     System.out.println(dest);
   }
 }

実行結果は以下の通り。
 dest.DestBean@bb0d0d[
    message=ほげほげ,
    booleanArray={true,false,true},
    list=[first, second],
    map={
      chars=[C@2c1e6b, 
      arr=[Ljava.lang.String;@811c88,
      int=1,
      bool=true,
      name=json
    }
 ]   整形してます
SrcBeanのプロパティがコピーされていることが確認できました。



***コンテンツ一覧 [#vd07dcbd]
#ls2

***関連リンク [#k8b55eb0]




----
この記事は
#vote(おもしろかった,そうでもない)
#vote(おもしろかった[1],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS