2016-04-25 23 views
0

私は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を使用してアプリケーションを起動/停止しています。

+0

あなたは '-Dspring.configを試してみました:

supervisorctl reread 

次へ]を、して変更を有効に。 location =/usr/share/myapp/'? – jny

+0

あなたは私の答えをここに似たような質問で見ることができます:http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367 –

+0

ありがとう。私はそれを試みたが、うまくいかなかった。その問題は春と無関係だったことが判明しました。私がアプリケーションを実行していたからです。アプリケーションランナー(supervisorctl)が設定ファイルをキャッシュしていました(アプリケーションの起動と停止の間)。申し訳ありませんが、私はそれを私の営業に含めませんでした。 – James

答えて

0

javaコマンドが含まれている設定ファイルを変更した後、supervisorctlが変更再読する必要があります。

supervisorctl update 
関連する問題