前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微服务之SpringCloud架构第三篇——服务调用及Feign介绍和使用

微服务之SpringCloud架构第三篇——服务调用及Feign介绍和使用

作者头像
leehao
发布2025-02-11 11:17:27
发布2025-02-11 11:17:27
17500
代码可运行
举报
文章被收录于专栏:leehaoleehao
运行总次数:0
代码可运行

1、Feign介绍

Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。 它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。

2、实例

1、续上一篇,启动注册中心eureka-server 端口8761、一个客户端应用2个实例,端口为8762和8763

2、创建feign

新建springboot应用,导入相关pom依赖,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</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-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>
        </dependencies>
    </dependencyManagement>

修改yml文件,将应用注册到eureka中,如下:

代码语言:javascript
代码运行次数:0
运行
复制
spring:
  application:
    name: service-feign
server:
  port: 8765
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

在启动类上,增加feign客户端注解,开启feign功能:

代码语言:javascript
代码运行次数:0
运行
复制
@EnableEurekaClient
@SpringBootApplication
@EnableFeignClients
public class SericefeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(SericefeignApplication.class, args);
    }
}

定义一个service接口,指定调用具体服务、具体接口:

代码语言:javascript
代码运行次数:0
运行
复制
@FeignClient(value = "DemoApp")
public interface ServiceSayHi {
    @RequestMapping(value = "/sayHi",method = RequestMethod.GET)
    String sayHiFromClient(@RequestParam(value = "name") String name);
}

其中DemoApp表示需要调用的应用服务,该应用服务已注册到注册中心,sayHi是需要调用的接口

编写Controller进行调用测试:

代码语言:javascript
代码运行次数:0
运行
复制
@RestController
public class HiController {
    @Autowired
    private ServiceSayHi serviceSayHi;
    @RequestMapping("/sayHi")
    public String sayHi(@RequestParam String name){
        return serviceSayHi.sayHiFromClient(name);
    }

}

访问http://localhost:8764/sayHi?name=张三

结果为:

再次刷新,结果为:

多次刷新,发现,端口号在8762和8763之间不断交替变化,说明feign发挥了作用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Feign介绍
  • 2、实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档