从零开始搭建spring cloud(五)使用Feign实现声明式REST调用

前文示例中是使用RestTemplate实现REST API调用的,使用的是拼接字符串的形式来构造url,这种方式显然是具有很多缺点的,在现实中请求往往带着很多参数,如果使用拼接url的方式,会导致效率低下,难以维护。Feign可以很好解决这个问题。

Feign 简介

Feign是netflix开发的声明式,模板化的客户端,可以帮助我们更加便捷,优雅的调用HTTP API,在spring cloud中使用Feign是非常简单的一件事,创建一个接口,并在接口上添加一些注解就可以了。spring cloud对Feign进行了增强,使得Feign支持了Spring MVC注解,并且整合了Ribbon和Eureka。

1.为原有的consumer项目添加Feign 依赖

project(':maoj-eureka-consumer'){
    dependencies {
        compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
//        compile('org.springframework.cloud:spring-cloud-starter-netflix-ribbon')
        compile('org.springframework.cloud:spring-cloud-starter-openfeign')
    }
}

2.创建一个Feign接口,并添加@FeignClient注解

@FeignClient("maoj-eureka-provider")
public interface UserFeignClient {
    @GetMapping(value = "/users/{id}")
    User findUser(@PathVariable("id") Long id);
}

注解中的maoj-eureka-provider可以换成任意客户端的名称,用于创建Ribbon负载均衡器。本例中使用了Eureka,所以Ribbon会把maoj-eureka-provider解析成eureka中服务的名称。

3.修改启动类,为其添加@EnableFeginClients注解

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MaojEurekaConsumerApplication {

//    @Bean
//    @LoadBalanced
//    public RestTemplate restTemplate(){
//        return new RestTemplate();
//    }

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

4.启动注册中心,和多个provider实例,和本项目,访问http://localhost:8010/consumer/users/1即可实现和和上篇文章一样的效果。

自定义Feign配置

在spring cloud中Feign的默认配置是FeignClientsConfiguration,该类定义了Feign默认使用的编码器,解码器,所使用的契约等。在spring cloud中,Feign默认使用的契约是SpringMvcContract,因此它可以使用Spring MVC的注解。

1.添加feign的配置文件

@Configuration
public class FeignConfiguration {
    @Bean
    public Contract feignContract(){
        return new feign.Contract.Default();
    }
}

2.在feign接口注解中标注使用的configuration


@FeignClient(name = "maoj-eureka-provider",configuration = FeignConfiguration.class)
public interface UserFeignClient {
    @GetMapping(value = "/users/{id}")
    User findUser(@PathVariable("id") Long id);
}

这样就实现了自定义feign配置,同理也可以对Feign的编码器,解码器等进行配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值