2

次のコードサンプルを考える

-- クライアント ライブラリ コード

@FeignClient("string-service")
public interface StringClient {

     @RequestMapping(method = RequestMethod.GET, value = "/microservicestring")
      public String home();
}


@Service
public class StringHystrixClient {

    private final SpringClient springClient;
//....

}

-- サービス ライブラリ コード

@RestController
public class StringController implements StringClient {
    public String home(){
         return "World";
    }
}


@SpringBootApplication
@EnableHystrix
@EnableEurekaClient
@EnableFeignClients
public class StringApplication { ....}

サービス ライブラリがクライアント ライブラリを参照する場合、アプリケーションが開始されると、コンポーネント スキャンによって、StringHystrixClient からの依存関係を埋めるときに、Spring コンテナーが何をすべきかわからない状態になります。これは、StringClient を実装する 2 つの Bean があるためです。

これを回避する 1 つの解決策は、StringController に StringClient を実装しないことですが、インターフェイスと残りのコントローラーからのコードの重複により、エラーが発生しやすくなります。誰かがこの問題に対するより洗練された解決策を指摘できますか?

4

0 に答える 0