Hatena::Groupseasarproject

S2できるかな?

2012-07-31

例えば、.propertiesファイルの内容を、連想配列にしてDIして持ちたいとか。

S2ベースのプロジェクト + Google Guavaで簡単にできますよ。

diconファイルの中に、以下のような記述を書きます。

	<component name="appMessagesProperties" class="java.util.Properties">
		@org.seasar.framework.util.ResourceUtil@getProperties("messages.properties") 
	</component>

	<component name="appMessages" class="java.util.Map">
		@com.google.common.collect.Maps@fromProperties(appMessagesProperties) 
	</component>

で、適当な所にappMessagesをDIする、と。

public class UserService {

	@Resource
	protected Map<String, String> appMessages;

	public String getHoge() {
		return appMessages.get("label.hoge");
	}

	// 中略
}

ちなみに、appMessagesは、ImmutableMapなので、putもremoveも出来ませんので、ご用心。

詳しくは、S2のResourceUtilと、GuavaのMapsのJavaDocをどうぞ。

トラックバック - http://seasarproject.g.hatena.ne.jp/halflite/20120731