扰扰博客

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 {

  @Override
  public void apply(RequestTemplate requestTemplate) {
    //根据开关,动态调整url
    MyProperties 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;

    @Autowired
    private EnergyCloudAdminFeignClient energyCloudAdminFeignClient;
  
    public void testMethod() {
       // 实现动态指定URI
       JSONObject jsonObject = energyCloudAdminFeignClient.getCurrUser(new URI(url), headers, bodies);

   }

}

 

posted @ 2025-09-17 16:07  扰扰  阅读(29)  评论(0)    收藏  举报