当前位置 : 主页 > 编程语言 > java >

Spring Cloud OpenFeign实例介绍使用方法

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 一. OpenFeign概述 二. 使用步骤 2.1 feign接口模块 2.1.1依赖配置 2.1.2编写FeignClient的接口, 并加@FeignCleint 注解 2.2 消费端使用fegin接口 2.2.1在消费者端添加feign接口依赖 2.2.2在消费者端配
目录
  • 一. OpenFeign概述
  • 二. 使用步骤
    • 2.1 feign接口模块
      • 2.1.1依赖配置
      • 2.1.2编写FeignClient的接口, 并加@FeignCleint 注解
    • 2.2 消费端使用fegin接口
      • 2.2.1在消费者端添加feign接口依赖
      • 2.2.2在消费者端配置文件中添加 feign.client.url
      • 2.2.3在消费者端启动类中添加@EnableFeignClients
      • 2.2.4在消费者端使用fegin接口
    • 2.3 测试

    一. OpenFeign概述

    OpenFeign 可以将提供者提供的 Restful 服务伪装为接口进行消费,消费者只需使用“ feign 接口 + 注解 ”的方式即可直接调用提供者提供的 Restful 服务,而无需再使用 RestTemplate 。

    注意:

    • Feign 只涉及到消费者端,与提供者端无关
    • Feign 仅仅是一个伪客户端,其不会对请求做任何处理。即其与使用 RestTemplate 效果 是一样的
    • Feign 是通过注解实现RESTful 请求的

    二. 使用步骤

    2.1 feign接口模块

    单独将feign接口放在模块中,方便后续为各个服务使用。

    2.1.1依赖配置

    springCloud版本使用

    <properties>
            <java.version>1.8</java.version>
            <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
            <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
        </properties>
        <dependencies>
            <!--fegin-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${spring-cloud-alibaba.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>

    2.1.2编写FeignClient的接口, 并加@FeignCleint 注解

    url写死在接口中不方便,可以使用动态参数配置,只需要在配置文件中添加key为feign.client.url的路径。这里使用是单体模式,如果分布式项目中配置多个url管理起来非常费事,就需要升级使用注册中心来解决。

    import com.example.vo.DepartVO;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.*;
    import java.util.List;
    // 注意,接口名与方法名可以随意
    // 参数指定了要访问的提供者微服务名称
    //@FeignClient(url ="http://127.0.0.1:8081", value="abcmsc-provider-depart", path = "/provider/depart")
    @FeignClient(url ="${feign.client.url}", value="abcmsc-provider-depart", path = "/provider/depart")
    public interface DepartService {
        @PostMapping("/save")
        boolean saveDepart(@RequestBody DepartVO depart);
        @DeleteMapping("/del/{id}")
        boolean removeDepartById(@PathVariable("id") int id);
        @PutMapping("/update")
        boolean modifyDepart(@RequestBody DepartVO depart);
        @GetMapping("/get/{id}")
        DepartVO getDepartById(@PathVariable("id") int id);
        @GetMapping("/list")
        List<DepartVO> listAllDeparts();
    }

    2.2 消费端使用fegin接口

    2.2.1在消费者端添加feign接口依赖

    2.2.2在消费者端配置文件中添加 feign.client.url

    指定服务端的url和端口

    2.2.3在消费者端启动类中添加@EnableFeignClients

    开启Feign功能:此注解会扫描启动类所在的包及其子包下面@FeignClient标注的接口,将其交给spring容器管理,方便后续使用。

    2.2.4在消费者端使用fegin接口

    需要在哪里使用接口直接注入后即可使用

    import com.example.providerapi.DepartService;
    import com.example.vo.DepartVO;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.List;
    @RestController
    @RequestMapping("/consumer/depart")
    public class DepartController {
        @Autowired
        private DepartService departService;
        @PostMapping("/save")
        public boolean saveHandle(@RequestBody DepartVO depart) {
     
            return departService.saveDepart(depart);
        }
        @DeleteMapping("/del/{id}")
        public void deleteHandle(@PathVariable("id") int id) {
            departService.removeDepartById(id);
        }
        @PutMapping("/update")
        public void updateHandle(@RequestBody DepartVO depart) {
            departService.modifyDepart(depart);
        }
        @GetMapping("/get/{id}")
        public DepartVO getHandle(@PathVariable("id") int id) {
            return departService.getDepartById(id);
        }
        @GetMapping("/list")
        public List<DepartVO> listHandle() {
            return departService.listAllDeparts();
        }
    }

    2.3 测试

    启动生产者服务,消费者服务

    http://localhost:8080/consumer/depart/save

    到此这篇关于Spring Cloud OpenFeign实例介绍使用方法的文章就介绍到这了,更多相关Spring Cloud OpenFeign内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    上一篇:Springboot实现动态定时任务流程详解
    下一篇:没有了
    网友评论