MetaDef

で、「参加します!!」つったまま何もしてなかったので、ようやく再始動。
とりあえず、org.seasar.framework.container.MetaDefについて書き始める。

まずはサンプル作ってみて、挙動を確認。
へぼ過ぎるのは愛嬌って事で。
metadata.dicon

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.3//DTD S2Container//EN"
	"http://www.seasar.org/dtd/components23.dtd">
<components>
  <meta name="hello">"Hello"</meta>
  <meta name="hello">"World!"</meta>
  <meta>"hello"</meta>
</components>
package examples.di.main;

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

public class MetaDataExamine {

    public static void main(String[] args) {
        S2Container container = S2ContainerFactory
                .create("examples/di/dicon/metadata.dicon");
        MetaDef[] meta = container.getMetaDefs("hello");
        for (int i = 0; i < meta.length; i++) {
            System.out.println("meta name is : " + meta[i].getName());
            System.out.println("meta value is : " + meta[i].getValue());
        }
    }
}

で、出力結果。

meta name is : hello
meta value is : Hello
meta name is : hello
meta value is : World!

とりあえず、予想通りmetaタグで定義するメタデータを保持するクラスで合ってるんだろうけど、どんな場合に使うんだろ?

こんな感じかなあ。

  • インスタンス変数に特殊な属性をつけたい時
  • インジェクションするクラスを何かの理由で変更したい時

もう少しまとめてからMLに投げてみようか。