SAStruts/共通の設定ファイルを作る

SAStruts/共通の設定ファイルを作る

設定読み出し用のクラスを作る

public class Config{
    public String CONFIG_STRING;
    public boolean CONFIG_BOOL;
    public int CONFIG_INT;
    public long CONFIG_LONG;
    public double CONFIG_DOUBLE;
    public List<String> CONFIG_LIST;
}

この名前は適当、なんでもいい

設定ファイルを書く

設定ファイルconfig.diconを作る。これはdiconファイルなのでenv.txtで環境別に切り替えられるという強みがある。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd">
<components>
    <component name="config" class="hoge.piyo.fuga.Config" instance="singleton" autoBinding="auto" >
        <property name="CONFIG_STRING">"hogehoge"</property>
        <property name="CONFIG_BOOL">true</property>
        <property name="CONFIG_INT">100</property>
        <property name="CONFIG_LONG">100L</property>
        <property name="CONFIG_DOUBLE">100.001D</property>
        <property name="CONFIG_LIST">
            {"hoge", "piyo", "fuga"}
        </property>
    </component>
</components>
</xml>

ここでそれの値をOGNLのリテラルで記述する

このファイルを app.diconとかで

<include path="config.dicon"/>

な感じで読み込む

設定をJavaコードから読み出す

設定を使いたい場所に

@Resource
public Config config;

のように書いてDIコンテナに突っ込んでもらう。

ActionやServiceの基底クラスに書いておくといいだろう。

テスト中の設定

この方式のいいところは、テストの時だけテストメソッドの中で値を入れ替えてしまえることだ。 テストは引数と戻り値で検証したいところだが、設定を外部から読むとそれがコントロール不能だとテスト性が落ちる。

逆に実行中にも書き換えられるのだが、これはやるなでいいだろう

タグ

java/sastruts/make_shared_configuration_files.txt · 最終更新: 2017-09-26 18:34 by ore