Spring Cloud Feign 请求动态URL
- FeignClient 中不要写url, 使用 @RequestLine修饰方法
- 调用地方必须引入 FeignClientConfiguration, 必须有Decoder, Encoder
- 调用类必须以构建函数(Constructor) 的方式注入 FeignClient 类
- 传入URL作为参数; 代码如下:
FeignClient类:
@FeignClient(name = "xxxxClient")
public interface XxxFeignClient {
@RequestLine("POST")
ResponseDto notifySomething(URI baseUri, ApproveNotifyDto notifyDto);
@RequestLine("GET")
ResponseDto getSomething(URI baseUri, XxxDto xxxDto);
}
ClientCaller类
@Slf4j
@Component
@Import(FeignClientsConfiguration.class)
public class CallerService {
private XxxFeignClient xxxFeignClient;
@Autowired
public CallerService(Decoder decoder, Encoder encoder) {
xxxFeignClient = Feign.builder()
//.client(client)
.encoder(encoder)
.decoder(decoder)
.target(Target.EmptyTarget.create(XxxFeignClient.class));
}
public ResponseDto notifySomething(String url, XxxxDto dto) throws URISyntaxException {
return xxxFeignClient.notifySomething(new URI(url), dto);
}
public String test() throws URISyntaxException {
String url = "http://localhost:9104/";
return xxxFeignClient.getSomething(new URI(url));
}
}
测试成功. 有点蛋疼.
参考链接:
https://stackoverflow.com/questions/43733569/how-can-i-change-the-feign-url-during-the-runtime
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/08/07 03:30