2017-06-28 14 views
0

私はSpringブートアプリケーションで定義された複数のプロファイルを持っています。起動時アプリケーションを再起動せずに、実行時にSpringプロファイルを適用します。

、私が適用されると、それらが活性化されるプロファイルを指定します。

実行時に、私はアプリを再起動せずにプロファイルを有効にする方法を探しています。

私が知っているのは、Springクラウドコンフィグレーションは、アクチュエータ/refreshエンドポイントを使用してアプリケーションを再起動して設定を外部化して再ロードする方法を提供します。

Iは、異なるプロファイル値に、アプリケーションのための春クラウド構成によって維持外部化構成でspring.profiles.active =プロファイル名プロパティを変更し、次いで/リフレッシュ・エンドポイントを使用してリロード。しかし、変化は反映されていません。私はSpringクラウド設定のネイティブプロファイルを使用しました。

しかし、Springクラウド設定/アクチュエータやその他のメカニズムを使用してアプリを起動した後で、プロファイルを変更したり、プロファイルを追加したりする必要があります。

私の要件を達成する方法はあります。

+1

'/ refresh'は' @ RefreshScope'でタグ付けされたBeanにのみ影響します。 http://projects.spring.io/spring-cloud/spring-cloud.html#_refresh_scope –

答えて

0

プロファイルは、起動時に作成されたBeanを決定するために使用されます。したがって、別のプロファイルのセットで実行したい場合は、再起動する必要があります。

実際に達成しようとしていることは何ですか?

実行時にBeanを選択する場合は、使用可能なすべてのBeanを注入し、実行可能な環境プロパティに基づいて選択する方法で、実行時に使用するBeanを選択するクラスを作成しますSpring Cloud Config/Refresh Endpointを介して、またはデータベース列を介してリフレッシュすることができます。

アップデート - 要件は、実行時にキャッシュを無効にすることです。

は(環境があなたの環境を注入された)

boolean isProfileActive(String profile) { 
    return Arrays.asList(environment.getActiveProfiles()).contains(profile); 
} 

はその後、キャッシュ可能な注釈

であなたのspel条件のためにそれを使用して、特定のプロファイルがアクティブであるか否かを判断する方法を記述します。これは、次のように行うことができます
+0

ご回答ありがとうございます。私の要件は、サービスメソッドでキャッシングを有効/無効にすることです。私は現在、それぞれのサービスメソッドに「@Cacheable」注釈が適用されており、起動時にアクティブ化するカスタムプロファイルとして「@EnableCaching」注釈付きのカスタム設定を使用します。今、私は起動後にキャッシュを有効/無効にしたいと思います。 – juser

+0

ああ、アクティブなプロファイルに基づいて実行時にキャッシュを無効にするための私の答えを見てください。 https://stackoverflow.com/questions/35917159/spring-boot-how-to-disable-cachable-during-development 私の回答も更新されます。 – PaulNUK

関連する問題