SAFluteでプロパティを追加するやり方

SAFluteにおけるプロパティ (.propertiesのキーに対応する値) を追加するやり方です。

通常の config の追加

まずは、環境依存しない config の追加の手順。

例えば、ここでは sea.land.size というプロパティを追加するとします。

1. xxx_config.properties にプロパティを追加

e.g. 結合環境(integration)用のcommonプロジェクトをビルド @properties
# 新しいプロパティをいい感じに説明する一行コメントをここに書こう!
sea.land.size = 30

追加する位置は、カテゴリを表すタグコメントに合わせていい感じに。(適当に追加しないこと)

2. FreeGen を叩く!

manage.bat(sh)の freegen (2) を叩く。

すると、追加したプロパティに対応するメソッドがConfigインターフェースに自動生成されます。

3. ConfigインターフェースをDIする

ConfigインターフェースをDIします。

e.g. Webプロジェクト固有のConfigインターフェース、ここでは Dockside @Java
@Resource
protected DocksideConfig docksideConfig;

Actionクラスであれば、既にスーパークラスでDIされている可能性がありますので、その場合は新たにDIする必要はないので既存のものを利用します。

common内で利用する場合は、共通のConfigインターフェースを使います。 インスタンスとしては同じものですが、利用できるプロパティがcommonのpropertiesに定義されたものだけになります。

e.g. commonプロジェクトのConfigインターフェース、ここでは Maihama @Java
@Resource
protected MaihamaConfig maihamaConfig;

4. Configインターフェースからgetする

DIしたConfigインターフェースからgetします。

数値の値であれば AsInteger というメソッドが、true/falseであれば isXxx() メソッドが生成されています。 また、すべてのプロパティに String で受け取るメソッドがあります。

e.g. commonプロジェクトのConfigインターフェース、ここでは Maihama @Java
Integer seaLandSize = docksideConfig.getSeaLandSizeAsInteger();

メッセージリソースもほぼ同じ

メッセージリソースもほぼ同じような流れです。 修正する.propertiesファイルが変わって、FreeGen叩いてタイプセーフにメッセージリソースを指定します。

環境依存の config の追加

まずは、環境依存する config の追加の手順。

例えば、ここでは sea.land.size というプロパティを追加するとします。

1. getするまでは通常のconfigと基本同じ

getするまでの手順は、通常のconfigと基本同じです。追加する .properties ファイルが、xxx_env.properties に変わるだけなので、普通に FreeGen までやって get してしまいます。

2. 結合や本番の.propertiesにも追加 ☆重要☆

結合や本番用の .properties にもプロパティを追加します。

3. PropertiesHTMLで確認

ここは、コンフリクトの恐れがあるので、タイミングがすぐではないかもしれません。 ただ、本番リリース前には必ずチェックする必要があります。

manage.bat(sh) で doc (22) を叩きます。

すると、properties-xxx.html が更新され、xxx_env.properties の環境ごとの差分が表となって表示されます。

本番への追加のし忘れがないか、間違って結合環境で本番の設定をしちゃっていたりしないか、このドキュメントでチェックします。

運用はプロジェクト次第ですが、少人数であれば各自が生成して気にせずコミットしてしまってもいいかもしれません。 頻繁に書き変わるものではありませんし、いざコンフリクトしてもHTMLファイル自体は破棄してしまっても問題ありません。 もう一度自動生成してしまえばいいだけなので。(.propertiesの方がしっかりマージできれば問題ない)