SpringCloud微服务(二),Feign声明式客户端

本文介绍了Feign在SpringCloud中的使用,作为声明式的Web服务客户端,简化了服务间的接口调用。首先讲解了Feign的基本概念,然后详细展示了如何在SpringCloud项目中整合Feign,包括添加依赖、配置服务注册、定义Feign接口及创建控制器。通过这些步骤,实现了从provide2服务调用provide1服务的接口,并成功获取返回结果。
摘要由CSDN通过智能技术生成

1、Feign简介

Feign是一个声明式的web服务客户端,它使得写web服务变得更简单,试想一下,在微服务项目中,多个服务分机部署在不同的服务器上,如果一个服务想要去调用另外一个服务的方法,通常会选择http请求,但在springcloud中,提供了Feign声明式客户端去更优雅的解决服务之间接口调用的问题,Feign通过@FeignClient注解方法,获取已注册到注册中心对应的服务,通过JDK动态代理实现远程调用。

在这里插入图片描述

2、SpringCloud整合Feign

2.1、添加provide2服务

修改provide2服务的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.springcloud</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.springcloud</groupId>
    <artifactId>provider2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>provider2</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!-- feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>
    </dependencies>
</project>
2.2、配置provide2服务

修改provide2服务中的bootstrap.yaml文件,将provide2服务注册到nacos。

server:
  port: 9002
spring:
  application:
    name: provide2
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
2.3、添加feign接口

此处因为要调用provide1的接口,@FeignClient注解中的name属性对应接口提供方在nacos的注册中心所注册的服务名,此处我要调用provide1服务提供的/provide1/info接口,该接口Rest类型为GET。

@FeignClient(name = "provide1")
public interface FeignInterface {

    @RequestMapping(value = "/provide1/info" , method = RequestMethod.GET)
    Map<String,Object> hello();
}
2.4、添加控制器

添加测试控制器,运行provide1和provide2服务

@RestController
@RequestMapping("/feign")
public class HelloController {

    @Autowired
    private FeignInterface feignInterface;

    @GetMapping("/info")
    public Map<String,Object> getInfo(){
        return feignInterface.hello();
    }
}

在浏览器输入provide2的接口地址http://localhost:9002/feign/info,浏览器显示结果如下,接口调用成功
在这里插入图片描述

完结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值