2016-02-01 21 views
10

スプリングプロファイルに基づいてスプリングブートユーレカクライアント登録を無効にする方法はありますか?ユーレカディスカバリクライアント - 選択的に無効にする

現在、私は次のアノテーションを使用します。

@Configuration 
@EnableAutoConfiguration 
@EnableDiscoveryClient 
@EnableConfigServer 

public class ConfigApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(ConfigApplication.class, args); 
    } 
} 

私は必要なものは、どちらかな(擬似コードを言い訳)

@if (Profile!="development") 
@EnableDiscoveryClient 
@endif 

またはアプリケーションのプロパティファイル内のいくつかの方法として、条件付きです。私はapplication.ymlファイルを次のように設定しようとしました:

spring: 
    profiles: development 
    cloud: 
    discovery: 
     enabled: false 

しかし、これはうまくいかないのです。

+0

[プロファイルがアクティブでないときビーン定義を含む]の可能な重複(http://stackoverflow.com/questions/13575201/including-bean-definition-when-a-profile-is-not-active) – g00glen00b

+0

に1つのプロファイルを除いたすべての場合にクラスを使用すると、 '@Profile("!development ")' – dmitryvim

答えて

13

はこのようにそれを実行します。いくつかの@Configuration注釈付きクラス(クラス本体を省略することができます)例:

@Profile("!developement") 
@Configuration 
@EnableDiscoveryClient 
public class EurekaClientConfiguration { 
} 

を作成するには、この設定ファイル(および内@EnableDiscoveryClientは) "以外のすべてのプロファイルにロードされることを意味します開発 "。

希望するもの、

+0

を書くことができます –

+0

これは素晴らしい答えですので、これをアップしてください。 – ogradyjd

3

ここに同じ問題があります。あなたは、これは使用してapplication.ymlでユーレカクライアントを無効にすることができ

spring: 
    profiles: development 

    eureka: 
    instance: 
     hostname: localhost 
    client: 
     registerWithEureka: false 
     fetchRegistry: false 
27

:あなたは、単にあなたのアプリケーションのプロパティファイルに次のような構成に置くことができます

eureka: 
    client: 
    enabled: false 

それ1つのプロファイルにもありますがあります

+4

あなたの答えに説明を加えてください。 –

+0

application.ymlまたはapplication.propertiesでは、3つ目の質問サンプルで書かれているように、さまざまなプロファイルでスプリング変数を設定できます。私はちょうどユーレカをこの方法で無効にすることを提案した – dmitryvim

4

標準のブール春・クラウドのプロパティ

をspring.cloud.discovery.enabled

異なるプロバイダを使用している可能性があるので、これは "ユーレカ"よりも優れている可能性があります。