プロパティ管理¶Caution本バージョンの内容は既に古くなっています。最新のガイドラインはこちらからご参照ください。本節では、プロパティの管理方法について説明する。アプリケーションが動作する環境に応じて指定する値を変える必要がある設定値。システム構成などの非機能要件に依存する。...アプリケーション設定値アプリケーションの動作をカスタマイズできる様にするための設定値。アプリケーションの機能要件に依存する。プロパティとして管理(プロパティファイルに定義)することを推奨している。テスト済みのアプリケーションをプロダクト環境にリリースする事が可能になる。「環境依存性の排除」を参照されたい。Tipプロパティとして管理している値は、JVMのシステムプロパティ(-Dオプション)やOSの環境変数から取得することができる。use」を参照されたい。プロパティとして管理されている値は、以下の2箇所で利用することができる。タグを定義することで、JavaクラスやBean定義ファイル内でプロパティファイル中の値にアクセスできるようになる。xxxに対する値を取得できる。xxxの設定が存在しない場合にdefaultValueを使用する。以下に、プロパティファイルの定義方法について説明する。説明(1)locationに設定する値は、リソースのロケーションパスを設定すること。location属性には、カンマ区切りで複数のパスを指定することができる。上記設定により、クラスパス中のMETA-INF/springディレクトリ配下のpropertiesファイルを読み込む。一度設定すれば、あとはMETA-INF/spring以下にpropertiesファイルを追加するだけで良い。locationの設定値の詳細は、リファレンスを参照されたい。両方に定義が必要である。デフォルトでは、以下の順番でプロパティにアクセスする。実行中のJVMのシステムプロパティ環境変数アプリケーション定義のプロパティファイルデフォルトでは、すべての環境関連のプロパティ(JVMのシステムプロパティと環境変数)を読み込んだ後に、アプリケーションに定義されたプロパティファイルが検索され、読み込まれる。タグのlocal-override属性をtrueに設定する。このように設定することで、アプリケーションに定義されたプロパティが、優先的に有効になる。説明(1)local-override属性をtrueに設定すると、以下の順番でプロパティにアクセスする。環境変数Note通常は上記の設定で十分である。タグを指定する場合、order属性の値を設定することで、読み込みの順位付けをすることができる。説明(1)order属性を(2)より低い値を設定することにより、(2)より先にlocation属性に該当するプロパティファイルが読み込まれる。(2)で読み込んだプロパティファイル内のキーと重複するキーが存在する場合、(1)で取得した値が優先される。ignore-unresolvable属性をtrueにすることで、(2)のプロパティファイルのみにキーが存在する場合にエラーが発生するのを防ぐ。(2)order属性を(1)より高い値を設定することにより、(1)の次にlocation属性に該当するプロパティファイルが読み込まれる。(1)で読み込んだプロパティファイル内のキーと重複するキーが存在する場合、(1)で取得した値が設定される。ignore-unresolvable属性をtrueにすることで、(1)のプロパティファイルのみにキーが存在する場合にエラーが発生するのを防ぐ。bean定義ファイル内でプロパティを使用する¶データソースの設定ファイルを例に説明を行う。)が指定されている前提で行う。プレースホルダで設定することで、プロパティ値を設定することができる。設定することで、読み込まれたプロパティファイルのキーdatabase.driverClassNameに対する値が代入される。設定することで、読み込まれたプロパティファイルのキーdatabase.urlに対する値が代入される。設定することで、読み込まれたプロパティファイルのキーdatabase.usernameに対する値が代入される。設定することで、読み込まれたプロパティファイルのキーdatabase.passwordに対する値が代入される。propertiesファイルのキーが読み込まれた結果、以下のように置換される。アノテーションを指定することで実現できる。アノテーションを使用するためには、そのオブジェクトはSpringのDIコンテナに管理されている必要がある。)が指定されている前提で行う。プレースホルダで設定することで外部参照することができる。設定することで、読み込まれたプロパティファイルのキーitem.upload.titleに対する値が代入される。file”が代入される。設定することで、読み込まれたプロパティファイルのキーitem.upload.dirに対する値が代入される。初期値”/tmp/upload”でオブジェクト生成されたorg.springframework.core.io.Resourceオブジェクトが格納される。設定することで、読み込まれたプロパティファイルのキーitem.upload.maxUpdateFileNumに対する値が代入される。整数型に10が代入される。@Valueアノテーションによるプロパティ値の取得は行えない。アノテーションを付けたHelperクラスを作成し、@Valueアノテーションでプロパティ値を取得することを推奨する。(当然、該当クラスはcomponent-scanの対象にする必要がある。プロパティ値を利用したいクラスは、Utilityクラスにすべきでない。extend¶プロパティ値の取得方法の拡張について説明する。クラスを拡張することで実現できる。拡張例として、暗号化したプロパティファイルを使用するケースを挙げる。暗号化したプロパティ値を復号して使用する¶セキュリティを強化するため、プロパティファイルを暗号化しておきたい場合がある。例として、プロパティ値が暗号化されている場合に復号を行う実装を示す。(具体的な暗号化、復号方法は省略する。説明(1)<context:property-placeholder/>の代わりに拡張したPropertySourcesPlaceholderConfigurerを定義する。<context:property-placeholder/>タグを削除しておくこと。(2)propertyタグのname属性に”locations”を設定し、value属性に読み込むプロパティファイルパスを指定する。