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"; } }
こんな感じで無事に取得できた。