Feign
Java中如何实现接口调用?即如何发起http请求
前三种方式比较麻烦,在发起请求前,需要将Java对象进行序列化转为json格式的数据,才能发送,然后进行响应时,还需要把json数据进行反序列化成java对象。
而restTemplate可以自动进行序列化和反序列化,比较方便。
如何使用Feign?
每个变量的含义:
path的值和StockController上的@RequestMapping后的内容一模一样即可
方法的书写和Controller层中方法的书写也一模一样即可,但是不用写方法体,大括号也不需要
第四步:注入FeignService,直接调用另一个微服务提供的方法即可
注意:在springMVC中接口的定义不严格,如果路径变量只有一个参数,它可以自动和唯一的形参对应上,但是在定义FeignService接口的时候,它的要求很严格,必须加上后面的别名,一对一的指定哪个参数对哪个参数
日志配置
一般通过Feign去调用服务的时候,不会输出任何日志信息,这对于开发者想调试,修改bug来说很不方便
1. 全局配置:通过定义一个配置类
返回Feign日志类型的一个枚举,然后修改配置文件中springboot默认的日志级别
注意:加上@Configuration注解就会对所有的服务提供方都生效
springboot默认的日志级别是info,feign的日志级别是debug,比info级别低,所以在springboot的项目中不会输出,我们还需要调整springboot的日志级别,但是我们不想调整所有日志的输出级别,只调整springboot针对feign定义的所有接口的输出日志级别,下面加上了feign定义的所有接口的包路径
最后就可以输出了
2.局部配置有两种方式:
(1)局部配置,调用指定的微服务时才输出日志
先将注解去掉,然后再在@FeignClient 注解中指定使用的配置类
s
(2)通过配置文件指定对哪个服务生效,再指定日志级别