openfeign的基本配置
1、日志配置
添加日志配置类:
package com.lemon.open.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Feign配置类,全局配置
*/
@Configuration
public class FeignConnfig {
@Bean
public Logger.Level feignLoggerLevel(){
return Logger.Level.FULL;
}
}
注意: 导入的是
import feign.Logger;
配置文件中进行配置:
server:
port: 9999
spring:
application:
name: lemon-openfeign
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
username: nacos
password: nacos
#springboot默认级别为info,feign的日志级别为debug,因此需要设置feign日志界别
logging:
level:
com.lemon.open.feign: debug #默认设置所有的日志级别,这里指定包名可以设置指定包调用时的日志级别
或者在接口配置中配置configuration进行配置
//name 表示需要调用的服务的名称
// path 表示调用服务所在的controller类主机的接口地址,如果没有可以不写
@FeignClient(name = "stock-service",path = "/stock",configuration=FeignConfig.class)
public interface StockFeignService {
// 声明需要调用的方法
// 此方法和服务提供者的接口保持一致
@GetMapping("/index")
String index();
}
2、契约配置:将springmvc的注解转换为Feign的原生注解
支持原生注解:
1、 添加配置Bean
@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {
public static void main(String[] args) {
SpringApplication.run(OpenApplocation.class,args);
}
@Bean
public Contract feignContract(){
return new Contract.Default();
}
}
2、配置文件:
扫描二维码关注公众号,回复:
13461667 查看本文章
feign:
client:
config:
服务名:
contract: feign.Contract.Default
如果配置了锲约那么需要将接口都转换成为feign原生过的注解才可以
3、超时配置:远程请求超时配置
1、配置bean:
package com.lemon.open;
import feign.Contract;
import feign.Request;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {
public static void main(String[] args) {
SpringApplication.run(OpenApplocation.class,args);
}
//
// @Bean
// public Contract feignContract(){
// return new Contract.Default();
// }
@Bean
public Request.Options options(){
return new Request.Options(5000,10000);
}
}
2、配置文件配置:
feign:
client:
config:
stock-service: #请求的服务名称
connectTimeout: 5000
readTimeout: 3000
4、自定义拦截器:消费端请求提供端的时候定义的拦截器
1、定义拦截器实现接口
RequestInterceptor
这个接口是feign的接口
package com.lemon.open.intercptor.feign;
import feign.RequestInterceptor;
import feign.RequestTemplate;
public class CustomFeignInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
// 拦截器的使用
System.out.println("inteee---------------------------------------------------");
System.out.println(requestTemplate);
}
}
2、实现Bean配置
@SpringBootApplication
@EnableFeignClients
public class OpenApplocation {
public static void main(String[] args) {
SpringApplication.run(OpenApplocation.class,args);
}
//
// @Bean
// public Contract feignContract(){
// return new Contract.Default();
// }
// @Bean
// public Request.Options options(){
// return new Request.Options(5000,10000);
// }
@Bean
public CustomFeignInterceptor customFeignInterceptor(){
return new CustomFeignInterceptor();
}
}