动力节点王鹤SpringBoot3笔记——远程访问@HttpExchange[SpringBoot 3]

本文介绍了Spring Boot 3中新的HTTP远程访问能力,特别是@HttpExchange注解的使用,包括声明式HTTP服务、接口方法定义、组合注解的使用、Java Record的支持以及如何定制HTTP请求服务,如设置超时和异常处理。
摘要由CSDN通过智能技术生成

目录

第六章  远程访问@HttpExchange[SpringBoot 3]

6.1.1.1  准备工作: 

6.1.1.2 声明式HTTP远程服务 

6.1.1.3 Http服务接口的方法定义

6.1.1.4 组合使用注解 

6.1.1.5 Java Record

6.1.1.6  定制HTTP请求服务 


第六章  远程访问@HttpExchange[SpringBoot 3]

远程访问是开发的常用技术,一个应用能够访问其他应用的功能。Spring Boot提供了多种远程访问的技术。 基于HTTP协议的远程访问是支付最广泛的。Spring Boot3提供了新的HTTP的访问能力,通过接口简化HTTP远程访问,类似Feign功能。Spring包装了底层HTTP客户的访问细节。 

SpringBoot中定义接口提供HTTP服务。生成的代理对象实现此接口,代理对象实现HTTP的远程访问。需要理解:

  • @HttpExchange
  • WebClient 

WebClient特性: 

我们想要调用其他系统提供的 HTTP 服务,通常可以使用 Spring 提供的 RestTemplate 来访问,RestTemplate 是 Spring 3 中引入的同步阻塞式 HTTP 客户端,因此存在一定性能瓶颈。Spring 官方在 Spring 5 中引入了 WebClient 作为非阻塞式HTTP 客户端。

  • 非阻塞,异步请求
  • 它的响应式编程的基于Reactor
  • 高并发,硬件资源少。
  • 支持Java 8 lambdas 函数式编程 

什么是异步非阻塞 

理解:异步和同步,非阻塞和阻塞
上面都是针对对象不一样
异步和同步针对调度者,调用者发送请求,如果等待对方回应之后才去做其他事情,就是同步,如果发送请求之后不等着对方回应就去做其他事情就是异步
阻塞和非阻塞针对被调度者,被调度者收到请求后,做完请求任务之后才给出反馈就是阻塞,收到请求之后马上给出反馈然后去做事情,就是非阻塞 

6.1.1.1  准备工作: 

1.安装GsonFormat插件,方便json和Bean的转换

2.介绍一个免费的、24h在线的Rest Http服务,每月提供近20亿的请求,关键还是免费的、可公开访问的。 

6.1.1.2 声明式HTTP远程服务 

需求: 访问 https://jsonplaceholder.typicode.com/  提供的todos服务。 基于RESTful风格,添加新的todo,修改todo,修改todo中的title,查询某个todo。声明接口提供对象https://jsonplaceholder.typicode.com/todos 服务的访问

创建新的Spring Boot项目Lession18-HttpService, Maven构建工具,JDK19。 Spring Web, Spring Reactive Web , Lombok依赖。

step1:Maven依赖pom.xml 

<dependencies>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-webflux</artifactId>
 </dependency>

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
 </dependency>
 <dependency>
  <groupId>io.projectreactor</groupId>
  <artifactId>reactor-test</artifactId>
  <scope>test</scope>
 </dependency>
</dependencies>

step2:声明Todo数据类

/**
 * 根据https://jsonplaceholder.typicode.com/todos/1 的结构创建的
 */
public class Todo {
  private int userId;
  private int id;
  private String title;
  private boolean completed;

  //省略 set , get方法

  public boolean getCompleted() {
    return completed;
  }

  public void setCompleted(bool
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值