最新版 !快速掌握 JDK17 + springboot3 + springcloud Alibaba :4、远程调用Feign

本文介绍了如何在最新的JDK17、SpringBoot3和SpringCloud Alibaba环境下使用Feign进行优雅的远程调用。通过详细步骤演示了订单微服务集成Feign的全过程,包括添加依赖、接口定义和调用注意事项,如接口路径、参数注解等,同时强调了Feign的负载均衡效果和连接超时配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面使用Ribbon方式实现负载均衡版的远程调用,实现没问题,但是每次都需要手动拼接URL,有点小麻烦,有没有更加优雅的方式呢?

答案是yes:使用Feign

1 什么是Feign

​ Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。

​ Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

2 订单微服务集成Feign

2.1 在shop-order-server项目的pom文件加入Fegin的依赖 (注意在服务调用方加)

<!--fegin组件-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.2 在启动类OrderServer.java上添加Fegin的扫描注解,注意扫描路径(默认扫描当前包及其子包)

package com.example.server;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@MapperScan("com.example.server.mapper")
@EnableDiscoveryClient
@EnableFeignClients
public class ShopOrderServerApplication {
   
   

    public static void main(String[] args) {
   
   
        SpringApplication.run(
### Spring Boot 整合 Spring Cloud Alibaba 示例教程 #### 项目准备 为了成功整合Spring Boot与Spring Cloud Alibaba,需先准备好开发环境。推荐使用的工具版本如下: - JDK 17 - Spring Boot 3.0.13 - Spring Cloud 2022.0.2 - Spring Cloud Alibaba 2022.0.0.0 - Nacos 2.3.0 (用于配置管理和服务发现)[^2] #### 创建基础工程结构 创建一个新的 Maven 或 Gradle 项目,在`pom.xml`文件中引入必要的依赖项。 对于Maven构建工具而言,可以在`pom.xml`加入以下内容来添加所需依赖: ```xml <dependencyManagement> <dependencies> <!-- Spring Cloud Alibaba --> <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> <!-- Other dependencies... --> </dependencies> </dependencyManagement> ``` #### 配置Nacos作为注册中心 在应用启动类上通过注解方式开启对Nacos的支持,并设置相应的属性以便连接至Nacos服务器实例。 ```java @SpringBootApplication @EnableDiscoveryClient public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 同时修改`application.properties`或`yaml`中的相应配置以指向本地或其他位置运行着的Nacos Server地址: ```properties spring.application.name=demo-service spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 ``` #### 使用Sentinel实现限流降级功能 除了基本的服务治理能力外,还可以借助于阿里巴巴开源组件——Sentinel来进行流量控制以及熔断保护等功能扩展。只需简单地向POM文件追加sentinel-spring-cloud-starter即可快速集成此特性。 ```xml <!-- Sentinel Starter --> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> ``` 完成上述操作之后便可以利用内置API定义资源并指定对应的规则了。 #### 实现服务间通信(RPC调用) 当多个微服务之间存在相互依赖关系时,则可通过Feign客户端发起远程过程调用来简化编码工作量;另外也可以考虑采用RabbitMQ这样的消息队列中间件来异步处理业务逻辑[^4]。 例如下面这段代码展示了如何在一个名为`user`的服务里声明一个接口去消费其他提供者暴露出来的HTTP API端点: ```java @FeignClient(name="order-service") public interface OrderService { @GetMapping("/orders/{id}") ResponseEntity<OrderDTO> getOrderById(@PathVariable Long id); } ``` 以上就是关于如何将Spring Boot同Spring Cloud Alibaba相结合的一些最佳实践建议,希望能够帮助读者更好地理解和掌握这套技术栈的应用场景与发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云上凯歌

好活,当赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值