Seasar DI Container with AOP

Beansクラスは、Commons BeanUtilsの 流れるようなインターフェース版です。 流れるようなインターフェースについては、 こちらをご覧ください

Beansクラスを使うには、S2-Tigerが必要です。 セットアップについては、こちらをご覧ください。

プロパティのコピー

JavaBeansとJavaBeans、MapとJavaBeans、MapとMap間でプロパティをコピーするためには、 copy(Object src, Object dest)execute()を組み合わせます。 最初の引数がコピー元、二番目の引数がコピー先です。

SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).execute();

オブジェクトの生成とプロパティのコピー

JavaBeansやMapを生成し、プロパティをコピーするためには、 createAndCopy(Class<T> destClass, Object src)execute()を組み合わせます。 最初の引数が生成するクラス、二番目の引数がコピー元です。

SrcBean src = new SrcBean();
...
DestBean dest = Beans.createAndCopy(DestBean.class, src).execute();

特定のプロパティだけを対象にする

特定のプロパティだけを対象にするには、 includes(String... propertyNames)を使います。

SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).includes("foo", "bar").execute();

特定のプロパティだけを対象外にする

特定のプロパティだけを対象外にするには、 excludes(String... propertyNames)を使います。 includes()と同時に指定することはできません。

SrcBean src = new SrcBean();
DestBean dest = new DestBean();
...
Beans.copy(src, dest).excludes("foo", "bar").execute();

特定のプレフィックスのついたプロパティだけを対象にする

特定のプレフィックスのついたプロパティだけを対象にするには、 prefix(String prefix)を使います。 コピー先のプロパティ名からプレフィックスは取り除かれます。

public where_aaa;
...
BeanMap map = Beans.createAndCopy(BeanMap.class, this).prefix("where_").execute();
System.out.println(map.get("aaa"));

beanDelimiterとmapDelimiter

department$nameのような'$'をデリミタにしたプロパティ名を持つJavaBeansをMapにコピーすると、 department.nameのような'.'をデリミタにしたプロパティ名に変換されます。 これは、S2JDBCのwhere() で使うために用意されている機能です。 '$'と'.'は、それぞれbeanDelimiter(char beanDelimiter)mapDelimiter(char mapDelimiter)を使って変更することができます。

BeanMap

BeanMapは、HashMap<String, Object>なクラスで、 存在しないプロパティにアクセスすると例外を投げるようになっています。