ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenFeign调用服务

2020-07-03 16:38:20  阅读:424  来源: 互联网

标签:调用 服务 string OpenFeign spring nacos public cloud String


一、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

标签:调用,服务,string,OpenFeign,spring,nacos,public,cloud,String
来源: https://www.cnblogs.com/Zzwena/p/13231159.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有