第一步引入依赖
<!--openFeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--负载均衡器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
第二步 在启动类上加注解
@SpringBootTest
@EnableFeignClients
class ItemServiceApplicationTests {
@Test
void contextLoads() {
}
}
第三步 在发送模块中编写 OpenFign 的调用模块
@FeignClient("item-common")//拉取的服务
public interface FeginTestOne {
@GetMapping("/fegin1/{msg}")//拉取的服务的路径
public String hello(@PathVariable(value = "msg",required = false) String msg); //通过这个方法发送请求
}
需要注意的是这个模块要与接收模块相对应 如下:
@RestController
public class FeginController {
@GetMapping("/fegin1/{msg}")
public String fegin1response(@PathVariable(value = "msg",required = false) String msg){
return "fegin1: " + msg;
}
}
第四步 使用openfgine
@Resource
private FeginTestOne feginTestOne;
@GetMapping("/login2")
public String login2(){
String s1 = feginTestOne.hello("success");
return s1;
}
定义公共模块openFigne 的包扫描问题
方式1:声明扫描包
方式2:声明要用的FeignClient
日志配置
OpenFeign只会在FeignClient所在包的日志级别为DEBUG时,才会输出日志。而且其日志级别有4级:
NONE:不记录任何日志信息,这是默认值。
BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
Feign默认的日志级别就是NONE,所以默认我们看不到请求日志。
定义日志级别
在hm-api模块下新建一个配置类,定义Feign的日志级别 注意可以不用加@configuration
package com.hmall.api.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
public class DefaultFeignConfig {
@Bean
public Logger.Level feignLogLevel(){
return Logger.Level.FULL;
}
}
配置
接下来,要让日志级别生效,还需要配置这个类。有两种方式:
局部生效:在某个
FeignClient
中配置,在发送模块的openfgine的接口中 只对当前FeignClient
生效
@FeignClient(value = "item-service", configuration = DefaultFeignConfig.class)
全局生效:在
@EnableFeignClients
中配置,{在启动类上面 } 针对所有FeignClient
生效。
@EnableFeignClients(defaultConfiguration = DefaultFeignConfig.class)