SAStrutsでアプリケーション設定値をもたせる方法

アプリケーションの設定値、例えばファイルアップロードで使う一時領域のパスやシステムで使う定数などをpropertiesファイルで持たせようかと思ったけど、diconファイルに登録する便利な方法があったので。


SAStrutsのソースディレクトリ(src/main/resource)にconfig.diconファイルを生成し、設定値を管理する。例えば下記のようなString型の名前がsampleで値が”サンプル”を作ってみます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" 
       "http://www.seasar.org/dtd/components24.dtd">
	<!-- サンプル -->
	<component class="java.lang.String" name="sample">
  		<arg>"サンプル"</arg>
	</component>	
</components>

次は、生成したconfig.diconファイルをapp.diconなどにincludeします。

<components>
	<include path="config.dicon"/>
</components>

次にサービスクラスなどに下記コードを記述する事でSAStrutsが自動でバインディングしてくれます。

public class ConfigSampleService {
    @Binding("sample")
    public String sample;
}

最後は、実際に値を参照してみます。
Actionクラスでconfig.diconのsampleを取得してみます。

public class IndexAction {
	
	public ConfigSampleService configSsampleService;
	
	@Execute(validator = false)
        public String index() {
		
		System.out.println(configSsampleService.sample);
		
        return "index.jsp";
    }
}

こんな感じで無事に取得できた。