SpringCloud服务调用OpenFeign

OpenFeign简介

OpenFeign是用来服务调用(可以不使用注册中心),整合了ribbion,支持负载均衡。在客户端使用

具体用法:

  • 开启:主启动类@EnableFeginClients

  • 使用:接口+注解(微服务调用接口+@FeginClient)

Feign和OpenFeign区别

Feign:Feign是Spring Cloud组件中的一个轻量级RESTful的HTTP服务客户端。Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。Feign的使用方式是:使用Feign的注解定义接口,调用这个接口,就可以调用服务注册中心的服务

OpenFeign:OpenFeign是Spring Cloud 在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

OpenFeign使用

1.pom文件引入依赖

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

2.主启动类添加@EnableFeignClients

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

3.业务接口添加@FeignClient

@Component
//value 是服务提供者注册名称
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface PaymentFeignService
{
    @GetMapping(value = "/payment/get/{id}")
    CommonResult<Payment> getPaymentById(@PathVariable("id") Long id);
}

调用的接口是CLOUD-PAYMENT-SERVICE 服务的/payment/get/{id}路径。

4.调用方的接口进行调用

注入@FeignClient作用的接口,直接使用

@RestController
public class OrderFeignController
{
    @Resource
    private PaymentFeignService paymentFeignService;

    public CommonResult<Payment> getPaymentById(@PathVariable("id") Long id)
    {
        return paymentFeignService.getPaymentById(id);
    }
}

@FeignClient 注解属性介绍

value, name

value和name的作用一样,如果没有配置url那么配置的值将作为服务名称,用于服务发现。反之只是一个名称

url

url用于配置指定服务的地址,相当于直接请求这个服务,不经过Ribbon的服务选择。像调试等场景可以使用

path

path定义当前FeignClient访问接口时的统一前缀,比如接口地址是/user/get, 如果你定义了前缀是user, 那么具体方法上的路径就只需要写/get 即可

@FeignClient 注解参考:https://www.cnblogs.com/ttaylor/p/16012997.html

posted @ 2023-05-05 22:18  享受生活2023  阅读(69)  评论(0编辑  收藏  举报