给定以下代码示例
-- 客户端库代码
@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容器不知道怎么办,因为有两个bean实现了StringClient。
避免这种情况的一种解决方案是不在 StringController 中实现 StringClient,但是接口和其余控制器的代码重复很容易出错。有人可以为这个问题指出一个更优雅的解决方案吗?