简单介绍在springcloud中使用openfeign来优化接口调用
目录
- 一、引入依赖
- 二、为服务提供者编写openfeign接口
- 三、服务消费者调用定义的openfeign接口
- 四、项目结构
- 五、日志级别配置
- 1、通过配置类进行全局配置
- 2、通过配置类进行局部配置
- 3、通过配置文件配置
一、引入依赖
<!--添加openFeign依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
二、为服务提供者编写openfeign接口
如需要调用的远程Controller接口如下(服务提供者接口)
@RestController
@RequestMapping("/stock")
public class StockController {@Value("${server.port}")String port;@GetMapping("/reduce")public String reduce(){System.out.println("扣减库存:"+port);return "扣减库存:"+port;}
}
需要编写的openfeign接口如下(服务消费者openfeign接口)
/*** name 指定调用rest接口所对应的服务名* path 指定调用rest接口所在的RequestMapping路径*/
@FeignClient(name = "stock-service",path = "/stock")
public interface StockFeignService {// 声明需要调用rest接口对应的方法@GetMapping("/reduce")String reduce();
}
三、服务消费者调用定义的openfeign接口
随后在服务消费者Controller接口中调用定义的openfeign接口,达到像调用本地接口一样调用远程接口
@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate StockFeignService stockFeignService;@GetMapping("/addOrder")public String addOrder(){System.out.println("下单成功");
// String msg = restTemplate.getForObject("http://stock-service/stock/reduce", String.class);String msg = stockFeignService.reduce();return "hello feign !"+msg;}
}
四、项目结构
五、日志级别配置
在服务消费者端往往需要查看调用服务提供者接口的日志信息,包括接口地址,接口返回参数等等,因此需要对openfeign日志进行配置,以下提供三种配置方式
1、通过配置类进行全局配置
定义一个配置类
@Configuration
public class FeignConfig {@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}
}
需要在yml配置文件中开启日志
# springboot默认的日志级别为info,feign的debug日志级别就不会输入,所以需要修改feign目录下对应的日志级别为debug
logging:level:com.tuling.order.feign: debug
该方式会作用于所有的服务提供者,即调用所有的服务提供者都会打印相应级别的日志
2、通过配置类进行局部配置
将配置类FeignConfig中的@Configuration注解去掉
public class FeignConfig {@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}
}
随后修改对应的FeignService中@FeignClient注解,加上configuration = FeignConfig.class
@FeignClient(name = "stock-service",path = "/stock",configuration = FeignConfig.class)
public interface StockFeignService {// 声明需要调用rest接口对应的方法@GetMapping("/reduce")String reduce();
}
最后注意同样需要在yml配置文件中开启日志
这样的方式可以通过编辑服务提供者对应的FeignService来自定义开启哪些服务提供者的日志
3、通过配置文件配置
# springboot默认的日志级别为info,feign的debug日志级别就不会输入,所以需要修改feign目录下对应的日志级别为debug
logging:level:com.tuling.order.feign: debugfeign:client:config:stock-service:logger-level: BASIC
其中stock-service为服务提供者对应的服务名