私はapplication.ymlファイルに保存されているデータソースパスワードを変更したいアプリケーションがあります。 YMLファイルのパスワードは、次のように格納されます。プロファイルを使用してSpringブートのコンフィギュレーションを外部化する方法は?
----
spring:
profiles: production
datasource:
password: prodpassword
注:開発用とステージ用のプロファイルもあります。
次のConfigurationProperties
のようなパスワードの小道具を使ってクラスに設定されている:今
@Component
@ConfigurationProperties(prefix="datasource")
public class DataSourceConnector {
private password;
public void setPassword(String password) {
this.password = password;
}
は、私は、コマンドライン引数を経由して単語$$ prodpaとprodpasswordを上書きしようとするが、それは動作しません。
また、jarの外側にある同じ(新しいパスワードを除く)application.ymlファイルを作成しようとしました。それはどちらもうまくいかない。
java -Dspring.profiles.active=production -jar /usr/share/myapp/myapp-1.0.jar --spring.config.location=/usr/share/myapp/
注:spring.config.location内のすべてのファイルのプロファイル固有のバリアントを指定した場合
:私はhttp://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-profile-specific-propertiesから原因このノートには、ロケーションのparamでファイル名を残しそれらのファイルは考慮されません。プロファイル固有のプロパティも使用したい場合は、
spring.config.location
のディレクトリを使用してください。
jarのapplication.yml内でdatasource.passwordを上書きするにはどうすればよいですか?
編集: supervisorctl
を使用してアプリケーションを起動/停止しています。
あなたは '-Dspring.configを試してみました:
次へ]を、して変更を有効に。 location =/usr/share/myapp/'? – jny
あなたは私の答えをここに似たような質問で見ることができます:http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367 –
ありがとう。私はそれを試みたが、うまくいかなかった。その問題は春と無関係だったことが判明しました。私がアプリケーションを実行していたからです。アプリケーションランナー(supervisorctl)が設定ファイルをキャッシュしていました(アプリケーションの起動と停止の間)。申し訳ありませんが、私はそれを私の営業に含めませんでした。 – James