Feign

1.Feign

1.1简介

在这里插入图片描述

为什么叫伪装?

​ Feign可以把Rest的请求进行隐藏伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做

1.2快速入门

1.2.1导入依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

1.2.2Feign的客户端

		@FeignClient("service")
		public interface UserClient {
    		@GetMapping("user/{id}")
    		Items queryById(@PathVariable("id") Integer id);

		}

  • 首先这是一个接口,Feign会通过动态代理,帮我们生成实现类,这点跟mybatis的mapper很像

  • @FeignClient,声明这是一个Feign客户端,同时通过value属性指定服务名称

  • 接口中的方法,完全采用SpringMVC的注解Feign会根据注解帮我们为您生成URL,并访问获取结果改造原来的调用逻辑,使用UserClient访问:

    @RestController
    @RequestMapping(value = "/consumer", produces = MediaType.APPLICATION_JSON_VALUE)
    public class ConsumerController {
    
        @Autowired
        private UserClient userClient;
        
        @GetMapping("/{id}")
        public User queryById(@PathVariable("id") Integer id){
            return userClient.queryById(id);
        }
    }
    

1.2.3开启Feign功能

我们在启动类上,添加注解,开启Feign功能

@SpringCloudApplication
@EnableFeignClients
public class ConsumerApplication {
    public static void main(String[] args) {
       SpringApplication.run(ConsumerApplication.class,args);
    }
}

Feign中已经自动集成了Ribbon负载均衡,因此我们不需要自己定义RestTemplate了

1.2.4启动测试:

访问接口:
在这里插入图片描述

1.3Hystix支持

Feign默认也有对Hysix的集成:只不过,默认情况下是关闭的,我们需要通过下面的参数来开启:

feign:
  hystrix:
    enabled: true

但是,Feign中的Fallback配置不像Ribbon中那样简单了

1)首先,我们要定义一个类,实现刚才编写的UserClient,作为fallback的处理类

@Component
public class UserClientImpl implements UserClient {
    @Override
    public User queryById(Integer id) {
        User user = new Items();
        user.setName("未知用户");
        return user;
    }
}

2)然后在UserClient中,指定刚才编写的实现类

@FeignClient(value = "service",fallback = UserClientImpl.class)
public interface UserClient {

    @GetMapping("user/{id}")
    Items queryById(@PathVariable("id") Integer id);

}

3)重启测试:

我们关闭service服务,然后在页面访问:
在这里插入图片描述

1.4请求压缩

Spring Cloud Feign支持对请求和响应进行GZIP压缩,以减少通信过程中的性能损耗。通过下面的参数即可开启请求与响应的压缩功能:

feign:
  compression:
    request:
      enabled: true #开启请求压缩
    response:
      enabled: true #开启响应压缩

同时,我们也可以对请求的数据类型,以及出发压缩的大小下限进行设置:

feign:
  compression:
    request:
      enabled: true #开启请求压缩
      mime-types: text/html,application/html,application.json #设置压缩的数据类型
      min-request-size: 2048 #设置出发压缩的大小下限

注:上面的数据类型·压缩大小下限均为默认值

1.5日志级别

通过logging.level.xx=debug来设置日志级别。然而这个对Feign客户端而言不会产生效果。因为@FeignClient注解修改的客户端被代理时,都会创建一个心得Feigin.Logger实例。我们需要额外指定这个日志的级别才可以。

1)设置cn.itcast包下的日志级别都为debug

logging:
	level:
		cn.itcast: debug

2)编写配置类,定义日志级别

@Configuration
public class FeignConfig {

    Logger.Level feignLooggerLevel(){
        return Logger.Level.FULL;
    }
}

这里指定的Levelji’bie是FULL,Feign支持4种级别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WEWIn2PW-1592560939047)(C:\Users\ZhouShu\Desktop\logger.png)]

Logger.Level feignLooggerLevel(){
    return Logger.Level.FULL;
}

}


这里指定的Levelji'bie是FULL,Feign支持4种级别:

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020061918063885.png#pic_center)

- NONE:不记录任何日志信息,这里是默认值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值