springCloud-Feign的使用

一、简介:

Feign是一个声明式的Rest 客户端,它能让Rest调用更加简单。Feign提供Http的请求模板,通过编写简单的接口和插入的注解,就可以定义好Http请求的参数,格式,地址信息,Feign 则会完全代理Http请求,我们只需要向调用方法一样调用它就可以完成服务请求及相关处理。SpringCloud 对Feign进行了封装,使其支持 springMvc标准注解和HttpMessageConverters。Feign可以与Eureka 和Ribbon 组合使用以支持负载均衡。

二、Feign的使用

1. 引入依赖

   <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

2. 在启动类上加注解 @EnableFeignClients

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.example.ribbon.ribbon.fegin")
public class RibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }

}

3. 使用Feign调用接口

@FeignClient(value = "eureka-client-user-service",configuration = FeignConfiguration.class)
public interface UserRemoteClient {

    @GetMapping("/user/helloToPerson")
    String sayHelloToPerson(@RequestParam("userName") String userName);
}

提供服务的接口是这样的


    @GetMapping("/user/helloToPerson")
    public String sayHelloToPerson(@RequestParam("userName") String userName){
        return myService.sayHelloToPerson(userName);
    }

@FeignClient中的eureka-client-user-service就是你要调用的服务的名字

@FeignClient中的 FeignConfiguration.class 就是写Feign配置信息的类名

@FeignClient 注解的作用:它标识当前是一个Feign的客户端,Value属性是对应的服务名称,也就是你需要调用哪个服务中的接口。

4. controller层的调用

@RestController
public class UserController {

    private MyService myService;

    @Autowired
    public UserController(MyService myService){
        this.myService = myService;
    }


    @GetMapping("/user/helloToPerson")
    public String sayHelloToPerson(@RequestParam("userName") String userName){
        return myService.sayHelloToPerson(userName);
    }
}

三、自定义Feign的配置

@Configuration
public class FeignConfiguration {

    /**
     * 日志级别的配置
     * @return
     */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.NONE;
    }

    /**
     * basic认证配置
     * @return
     */
    @Bean
    public BasicAuthenticationInterceptor basicAuthenticationInterceptor(){
        return new BasicAuthenticationInterceptor("user","password");
    }

    /**
     * 配置超时时间
     * @return
     */
    @Bean
    public Request.Options options(){
        return new Request.Options(5000,10000);
    }


}

写好这个类之后,要在@FeignClient 的注解中加入 configuration = FeignConfiguration.class

四、GZIP压缩配置

可以在配置文件中加入如下配置:

#gzip压缩配置
feign.compression.request.enabled=true
feign.compression.response.enabled=true
#配置压缩类型、最小压缩值的准
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值