动态Feign

https://my.oschina.net/joryqiao/blog/1925633

1.  FeignClient 中不要写url, 使用 @RequestLine修饰方法

2. 调用地方必须引入  FeignClientConfiguration, 必须有Decoder, Encoder

3. 调用类必须以构建函数(Constructor) 的方式注入 FeignClient 类

4. 传入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

猜你喜欢

转载自www.cnblogs.com/xiang--liu/p/12470395.html