DIの定義ファイルと環境毎の設定ファイル

コンポーネント(あるいはBean)の初期値を設定するのに、DIの定義ファイル(Seasarならdiconファイル)のプロパティ値を設定する仕組み(Seasarならpropertyタグ)を使えば良いじゃないという考え方もあるようだけど、細かい数値や文字列を定義ファイルに一杯書くのはあんまり気が進まない。DIの定義ファイルにはオブジェクト間の依存性の関係(トポロジー)だけを記述して、それ以外の設定値とは別にしたい感じ。その方がデプロイも楽だし。


その設定値自体にも何段階かレベルがあって、

  • システムに固有のもの(ログファイルの文字コードとか)
  • 実行環境毎に異なるもの(メールサーバへの接続情報とか)
  • サービス毎に異なるもの(サービス名とか、メールのFromアドレスとか)
  • 実行するインスタンス毎に異なるもの(バインドするTCPのポート番号とかログファイルのディレクトリとか)

といったレベル毎に管理方法が異なっても良いと思う(まあ何が固有なのかは状況によって変わるけど。他言語対応とかASPとか。) 一番目の奴はDIの定義ファイルやクラスパス内のPropertiesファイルでも良いだろう。二番目と三番目は一緒になっていても良いかもしれない。値そのものや設定ファイルの検索パスを起動時の引数で与えるのも良いかもしれない。あるいは運用形態によってはファイルではなくDBで管理する場合もあると思う。


レベル毎に管理方法を分ける事で、内容の重複を減らせるし、デプロイも楽になると思う。でもプログラムからはあんまりそういった複雑さが見えなくなっている方が嬉しいなあ。やっぱりカスケード?