zoukankan      html  css  js  c++  java
  • OpenFeign调用服务

    一、Spring Cloud OpenFeign

    官网:https://cloud.spring.io/spring-cloud-openfeign/2.2.x/reference/html/#spring-cloud-feign

    Feign是声明式的web服务客户端,使用feign可以使web服务客户端编写起来更加容易。

    二、使用feign

    创建一个接口,在上面加上Feign的注解。

    2.1、提供者

    提供者需要注册到nacos上提供服务,这里使用的注册中心是nacos。

    2.1.1、依赖

    <!--web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--nacos-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    

    2.1.2、启动类

    这里将controller一起写到了启动类里。

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosProvider9001Application {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosProvider9001Application.class, args);
        }
    
        @RestController
        public class EchoController {
    
            /**
             * serverPort从application配置文件读取
             */
            @Value(value = "${server.port}")
            private String serverPort;
    
            @GetMapping(value = "/echo/{string}")
            public String echo(@PathVariable String string) {
                return "Hello Nacos Discovery " + string + ":" + serverPort;
            }
        }
    }
    

    2.1.3、配置文件

    server.port=9001
    # 服务名,也是注册到nacos上的名
    spring.application.name=nacos-provider
    # nacos注册中心的地址
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    

    2.2、消费者

    消费者也要注册到nacos,然后使用feign调用提供者的接口。

    2.2.1、依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

    2.2.2、启动类

    启动类添加注解@EnableFeignClients即可

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

    2.2.3、配置文件

    server.port=8088
    spring.application.name=nacos-feign
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    

    2.2.4、service接口

    package com.example.nacosfeign.service;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * FeignClient中的value是想要调用的微服务名称
     *
     * @author Zzwen
     * @date 2020/6/3 14:37
     */
    @Component
    @FeignClient(value = "nacos-provider")
    public interface FeignService {
    
        /**
         * mapping填入想要调用的微服务接口的相应路径
         *
         * @param string string
         * @return string
         */
        @RequestMapping("/echo/{string}")
        String echo(@PathVariable String string);
    
    }
    
    

    2.2.5、controller

    @Controller
    public class FeignController {
    
        @Resource
        private FeignService feignService;
    
        @ResponseBody
        @RequestMapping("/feign/{string}")
        public String feignString(@PathVariable String string) {
            String echo = feignService.echo(string);
            return "feign, " + echo;
        }
    
    }
    

    3、运行

    3.1、启动本地nacos


    启动成功后:

    3.2、运行provider、consumer启动类

    运行成功后在nacos网页上能够查看到这两个微服务,名称就是application.name

    首先测试provider服务器能否正常访问,访问:http://localhost:9001/echo/1111

    在通过feign调用接口进行访问,访问:http://localhost:8088/feign/stet

  • 相关阅读:
    iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了
    如何在获取不到第一响应者控件时移除键盘
    类名与字符串的互转
    clang format 官方文档自定义参数介绍(中英文)
    clang format 自定义样式常用参数说明
    Xcode 设置代码不自动换行
    企业项目如何打包成.ipa文件
    多个过渡动画效果
    压栈过渡动画
    底部不规则导航栏2
  • 原文地址:https://www.cnblogs.com/Zzwena/p/13231159.html
Copyright © 2011-2022 走看看