7.Feign

7.1.Feign简介

介绍Feign前,我们先来说一下Ribbon的缺点

1.在实际生产中,Ribbon调用服务提供者,通过restTemplate调用,缺点是,多个地方调用,同一个请求要写多次,不方便统一维护;

2.调用方式,与传统的MVC方式不一样,原来是直接注入Service,所有在实际使用我们跟希望保持与原来的一致;



Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。

在Spring Cloud中,使用Feign非常简单——创建一个接口,并在接口上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。

Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,要配置负载均衡的话,直接配置Ribbon即可,无其他特殊地方,从而让Feign的使用更加方便。

Fiegn也整合了服务容错保护,断路器Hystrix等,后面我们会详细讲解。

7.2.Feign实战应用

第一步:在common项目里建一个service接口作为Feign客户端,用Feign客户端来调用服务器提供者,当然可以配置负载均衡;

Feign客户端定义的目的,就是为了方便给其他项目调用;  

修改 common模块

pom.xml引入Feign依赖:

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

在common中建立TicketClientService接口:

package com.wfd360.service;

import com.wfd360.model.Ticket;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * @author 姿势帝-博客园
 * @address https://www.cnblogs.com/newAndHui/
 * @WeChat 851298348
 * @create 07/18 8:49
 * @description
 */
//调用的服务名称
@FeignClient(value = "SERVICE-TICKET")
public interface TicketClientService {
    /**
     * 根据id查询车票信息
     *
     * @param id
     * @return
     */
    @GetMapping(value = "/ticket/get/{id}")
    Ticket get(@PathVariable("id") Integer id);

    /**
     * 查询车票信息
     *
     * @return
     */
    @GetMapping(value = "/ticket/list")
    List<Ticket> list();

    /**
     * 添加或者修改车票信息
     *
     * @param ticket
     * @return
     */
    @PostMapping(value = "/ticket/save")
    boolean save(Ticket ticket);

    /**
     * 根据id删除车票信息
     *
     * @return
     */
    @GetMapping(value = "/ticket/delete/{id}")
    boolean delete(@PathVariable("id") Integer id);
}
View Code

相关文章:

  • 2021-05-23
  • 2021-04-09
  • 2022-01-04
  • 2021-10-27
  • 2022-12-23
  • 2021-10-02
  • 2021-04-24
猜你喜欢
  • 2022-12-23
  • 2021-12-23
  • 2021-08-28
  • 2022-01-09
  • 2021-07-03
  • 2021-05-11
  • 2021-07-31
相关资源
相似解决方案