1

私は、Eurekaを介して外部Webサービスを呼び出すためにFeignを使用するSpring起動アプリケーションを用意しています。私は、Feureインターフェイスの虚偽の実装を使用してアプリケーションを実行できるようにしたいので、Eurekaや外部Webサービスを実行する必要はなく、アプリケーションをローカルで実行できます。私はこれを可能にする実行コンフィギュレーションを定義することを想像していましたが、これを動作させるのに苦労しています。問題は、Springの「魔法」が、私が試したことに関係なく、FeignインターフェースのためのBeanを定義しているということです。環境に基づいて異なるFeignクライアント実装を定義する

装うインタフェース

@FeignClient(name = "http://foo-service") 
public interface FooResource { 
    @RequestMapping(value = "/doSomething", method = GET) 
    String getResponse(); 
} 

サービス

public class MyService { 
    private FooResource fooResource; 

    ... 

    public void getFoo() { 
     String response = this.fooResource.getResponse(); 
     ... 
    } 
} 

私は春のプロファイルは、「ローカル」であった場合は、条件付きでBeanを登録し、設定クラスを追加してみましたが、それは呼ばれませんでしたそのSpringプロファイルでアプリケーションを実行したとき:

時点

私のサービスの実行、MyServiceFooResourceメンバ変数は、IntelliJのにかかるタイプ

HardCodedTarget(タイプ= FoorResource、URL = http://foo-service

です。これはSpring Cloud Netflixフレームワークによって自動的に生成されるタイプなので、リモートサービスと実際に通信しようとします。

構成設定に応じて条件付きでFeignインターフェイスの実装を上書きする方法はありますか?

答えて

1

同じ質問をgithubリポジトリSpring Cloud Netflixに投稿したので、有用な答えは、Spring @Profile注釈を使用することでした。

@EnabledFeignClientsと注釈されていない別のエントリポイントクラスを作成し、私のFeignインターフェイスの実装を定義した新しい設定クラスを作成しました。これで、Eurekaを実行する必要がなくてもアプリケーションをローカルで実行できるようになりました。

関連する問題