私はSpringBlockアプリケーションをSpringBlockアプリケーションで使用しています。プロパティにフラグが立てられている場合、企業のパスワードボールトから読み込むプロパティを処理するカスタムコードを記述する必要があります。私は春のクラウドがHashicorp Vaultをサポートしていることを知っていますが、その場合はそうではありません。私は別のソースから取得するためのハードコード固有の特性のためにしたくないSpring Cloud Configを使用したカスタムプロパティローダー
、例えば、私は、プロパティに値をプロファイルdev
とアプリケーションapp1
用のファイルなければなりません:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
たがために私が持っているだろうなprod
などいくつかの他のプロファイル、:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=prod-user
spring.datasource.password=[[vault]]
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
それが返された値がに等しい見つけるたびだから私はロードされたプロパティを傍受するためにカスタムプロパティボールトを必要とします(または他のタイプのフラグ)を使用し、代わりに企業のボールトからクエリを実行します。この場合、私のカスタムプロパティローダーは企業のパスワードボールトからプロパティspring.datasource.password
の値を見つけるでしょう。他のすべてのプロパティは、標準のSpringクラウドコンフィグレーションクライアントによってロードされた値からそのまま返されます。
注釈付きコードのみを使用し、XML設定は使用しないでください。
あなたは 'EnvironmnentPostProcessor'を確認しましたか? –
こんにちはStephaneNicoll、EnvironmnentPostProcessorで、私は読み込まれたプロパティをスキャンする方法を見つけることができません。 'environment.getPropertySources()。get(" applicationConfigurationProperties ")'はプロパティを反復することはできません。プロパティを持つObject(実際はArrayList)を返す 'getSource()'があります。それはハッキーに思われるキャストが必要です。さらに、クラスパス内のapplication.propertiesのみがConfigServerからロードされたプロパティを保持するConfigurableEnvironmentの基本オブジェクトを見つけることができませんでした。さらなる助けに感謝します。 –
この回答を確認http://stackoverflow.com/a/41463684/613628 –