ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Feign动态URL配置

Feign动态URL配置

方式一、亲测可用,缺点是每个类都需要单独配置

@FeignClient(value = "my-biz", url = "${external.my.biz_url}", configuration = FeignHeaderInterceptor.class)
public interface MyBizFeign {}@Data
@Component
@RefreshScope
@ConfigurationProperties(prefix = "ifc")
public class MyProperties {/** 是否使用冒烟url */private boolean useSmokeUrl;/** 冒烟地址 */private String smokeUrl;
}@Slf4j
public class FeignHeaderInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {//根据开关,动态调整urlMyProperties properties = SpringUtil.getBean(MyProperties .class);if (null != properties && properties .isUseSmokeUrl()) {requestTemplate.target(ifcProperties.getSmokeUrl());}// 添加header请求头log.debug("request feign请求,添加header头信息~~");requestTemplate.header("X-SOURCE-SYSTEM", SYS_NAME);}
}

方式二、没测过

@FeignClient(name = "energyCloudAdminFeignClient", url = "${energy.cloud.url}")
public interface EnergyCloudAdminFeignClient {@GetMapping("/sys/user/getCurrUser")JSONObject getCurrUser(URI uri, @RequestHeader MultiValueMap<String, String> headers, @RequestParam Map<String, String> bodies);
}
@Service
@RefreshScope
@Slf4j 
public class SysUserOtherAppService {@Value("${energy.cloud.url}")private String url;@Autowiredprivate EnergyCloudAdminFeignClient energyCloudAdminFeignClient;public void testMethod() {// 实现动态指定URIJSONObject jsonObject = energyCloudAdminFeignClient.getCurrUser(new URI(url), headers, bodies);}}

 

返回列表