diconファイルの値をプロパティファイルから設定する

昨日のWithout EJB勉強会で出た話題。SpringのPropertyPlaceholderConfigurer相当のことはOGNL式を使えばできるはずということ。

a.dicon



	
		
			@java.lang.Thread@currentThread()
				.getContextClassLoader()
				.getResourceAsStream("nt/seasar/prop/a.properties")
			
		
	
	
		prop["name"]
		new java.net.URL(prop["url"])
		prop["description"]
	

a.properties

name=taedium
url=http://d.hatena.ne.jp/taedium/
description=taedium's diary
package nt.entity;
import java.net.URL;

public class Person {
    private String name;
    private URL url;
    private String description;
    
    public Person(String name, URL url, String description) {
        this.name = name;
        this.url = url;
        this.description = description;
    }
    
    public String toString() {
        return new StringBuffer()
            .append("name=").append(name).append(", ")
            .append("url=").append(url).append(", ")
            .append("description=").append(description).append(", ")
            .toString();
    }
}
package nt.seasar.prop;
import nt.entity.Person;

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

public class UsePropetyFileClient {
    private static final String PATH = "nt/seasar/prop/a.dicon";
    public static void main(String[] args) {
        S2Container container = S2ContainerFactory.create(PATH);
        Person p = (Person)container.getComponent("person");
        System.out.println(p);
    }
    
}

実行結果

name=taedium, url=http://d.hatena.ne.jp/taedium/, description=taedium's diary, 

できました。