RestTemplate请求问题
参数多时,拼接请求困难
feign or openFeign
简化调用方式,可以自定义feign访问其他项目
/**
name:指定 Feign 客户端的名称,该名称将被用作 Spring 中 Bean 的名称。它通常用于标识调用的服务。
url:可选参数,指定 Feign 客户端调用的基础 URL。当指定了 url 参数时,name 参数会被忽略,Feign 将直接使用该 URL 进行请求,而不会通过服务注册中心发现服务。
configuration:可选参数,指定自定义的 Feign 配置类,用于配置 Feign 客户端的行为。主要关注RequestInterceptor
**/
@FeignClient(name = "example-service", url = "http://example.com", configuration = MyFeignConfiguration.class)
自定义feign配置
@FeignClient(configuration=)
属性自定义Feign的配置
不使用compont注解让spring代理,如果代理会替换掉所有的feign配置
@Slf4j
public class WbgjCFeignConfiguration {
@Resource(name = "wbgjHttpConfigToC")
// 延迟加载,在未使用框架时无需配置签名信息
@Lazy
WbgjHttpConfigProperties wbgjHttpConfigProperties;
@Bean
public Request.Options requestOptions() {
// 设置Feign的超时配置
return new Request.Options(1000, 2000);
}
@Bean
// 也可实现 RequestInterceptor 接口
public RequestInterceptor customRequestInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate requestTemplate) {
// 拼接签名
WbgjRequestUtil.applySign(requestTemplate, wbgjHttpConfigProperties);
}
};
}
}
使用配置文件进行配置
Feign对继承的支持
feign 支持继承,但不推荐使用
Feign的日志
- NONE: 不记录任何日志(默认)
- BASIC:请求方法、URL 响应状态码,执行时间
- HEADERS:在BASIC 的基础上记录请求和响应的header
- FULL :打印请求体和返回值
有几个日志级别,建议通过配置文件配置日志级别,排查问题时,可通过springAdmin 在线修改日志等级