Hatena::Groupseasarproject

きむきむのSeasar日記 このページをアンテナに追加 RSSフィード

seasar.org
<< 2004/05 >>
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
 | 

2004年05月17日

Seasar V2.0.8 Seasar V2.0.8 - きむきむのSeasar日記 を含むブックマーク はてなブックマーク - Seasar V2.0.8 - きむきむのSeasar日記 Seasar V2.0.8 - きむきむのSeasar日記 のブックマークコメント

が昨日リリースされ、変更点が結構ありますが、今までのサンプルは全部動きます。

[]自動初期化 自動初期化 - きむきむのSeasar日記 を含むブックマーク はてなブックマーク - 自動初期化 - きむきむのSeasar日記 自動初期化 - きむきむのSeasar日記 のブックマークコメント

自動初期化には、条件があります。

  1. プロパティの型がインターフェイスである
  2. その実装クラスがコンテナ上に取得可能なコンポーネントとして登録されている
  3. <component>エレメントのautoBinding属性が記述されていないか、"auto"もしくは"property"

インターフェースを用意

BoyAttribute.java

package jp.gr.java_conf.kimura.seasar2.example4;

public interface BoyAttribute {

 void setName(String name);

 String getName();

}


実装クラスを用意

BoyAttributeImpl.java

package jp.gr.java_conf.kimura.seasar2.example4;

import jp.gr.java_conf.kimura.seasar2.example3.GirlAttribute;

public class BoyAttributeImpl extends GirlAttribute implements BoyAttribute {

}

継承関係が逆だけど気にしない。(爆 (サンプルなので、流用出来る物は、流用しちゃいます。ダメコードだ・・・)


Boy.javaに以下のコードを追加

 public void setAttribute(BoyAttribute attribute) {

  name_ = attribute.getName();

 }


MainAutoInit.java

package jp.gr.java_conf.kimura.seasar2.example4;

import jp.gr.java_conf.kimura.seasar2.example1.Kisser;

import org.seasar.framework.container.S2Container;

import org.seasar.framework.container.factory.S2ContainerFactory;

public class MainAutoInit {

 public static void main(String[] args) {

  S2Container container = S2ContainerFactory.create("jp/gr/java_conf/kimura/seasar2/example4/config.dicon");

  Kisser kisser = (Kisser) container.getComponent(Kisser.class);

  kisser.kiss();

 }

}


config.dicon(2.0.8からは、拡張子が、xmlではなく、dicon!)

<?xml version="1.0" encoding="UTF-8"?>

<components>

 <component name="attribute" class="jp.gr.java_conf.kimura.seasar2.example4.BoyAttributeImpl">

  <property name="name">'Oreju'</property>

 </component>

 <component name="oreju" class="jp.gr.java_conf.kimura.seasar2.example1.Boy"/>

 <component class="jp.gr.java_conf.kimura.seasar2.example1.Girl">

  <property name="name">'Aya Matsuura'</property>

  <property name="kissable">oreju</property>

 </component>

</components>

設定ファイル上、Boyクラスには、何も値がセットされていない。


けど、実行結果は、

Oreju was kissed by Aya Matsuura !!

自動で値がセットされました!


・コンストラクタでも同様の事が出来ます。

 ただし、引数の一番多いコンストラクタが使用されます。

 かつ、インターフェースのみを引数に持つコンストラクタ。

トラックバック - http://seasarproject.g.hatena.ne.jp/skimura/20040517
 | 
日記内検索(ヘッダまで戻らなくていいから、便利?)

このコンテンツは、投げ銭を受けつています。
@payの後払い