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に投げてみようか。