前提
SpringのServer起動時のプレースホルダ化の順番についてお聞きしたいのですが。
プロパティファイルを暗号化している事もあり、復号時システムプロパティの定義値が反映されておらずエラー終了となります。
SpringのライブラリでPlaceholderConfigurerSupport#doProcessPropertiesで行っていると思うのですが、システムプロパティ(Server起動パラメータに指定した-Dencrypt.password=test)が適用されていません。
プレースホルダー化の内部処理の流れは下記の様に推察出来ますが、間違っていますでしょうか?
①propertiesファイル読み取り。
②システムプロパティで同キー値があれば上書き。
また、処理の実ソース部(Java)をご存じの方いましたらご教示ください。(たどり着けません・・)
実現したいこと
Server起動時、アプリケーションのプレースホルダー化処理でシステムプロパティ利用があればその値をValue値としてセットしたい。
発生している問題・エラーメッセージ
プロパティファイルの復号に失敗している。
該当のソースコード
XML
1<constructor-arg name="password" value="${encrypt.password}" type="java.lang.String">
試したこと
ブレークポイントをPlaceholderConfigurerSupportに当て、Server起動しRepository群をDI(DB接続)する為にいつ呼ばれているか確認。=>当然DB接続前に止まる。
XMLの${encrypt.password}を平文べた書きで書くと正しく起動する。
補足情報(FW/ツールのバージョンなど)
Java1.8+SpringFrameworkを使用してます。
あなたの回答
tips
プレビュー