Spring Boot 3.0 新特性 - @RSocketExchange 示例

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1344)   2024-04-17 10:39:48

从Spring 6和Spring Boot 3开始,与OpenFeign和Retrofit等其他声明式客户端类似,Spring框架支持以Java接口的形式创建RSocket服务,并为RSocket交换提供带注释的方法。本教程将教我们使用@RSocketExchange为RSocket协议创建一个声明式请求者客户端。

声明式HTTP接口是一种Java接口,它有助于减少样板代码,生成实现该接口的代理,并在框架级别执行交换。
 

1. Maven

我们需要引入最新版本的spring-boot-starter-rsocket依赖,以包含所有必要的类和接口。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-rsocket</artifactId>
</dependency>

2. 使用@RSocketExchange注解

@RSocketExchange注解,将RSocket服务接口的方法声明为RSocket端点。它接受一个` value `参数来定义端点路由。@RSocketExchange用于HTTP传输,类似于@RequestMapping用于表示接口级别的公共路由,可以被所有服务方法继承。

public interface MessageService {

  @RSocketExchange("message")
  public Mono<String> sendMessage(Mono<String> requestObject);
}


服务方法可以接受以下方法参数:

  • @DestinationVariable:添加一个路由变量,将模板占位符扩展到路由中。
  • @Payload:可选注解,用于设置请求的输入有效载荷。
  • Object,然后是MimeType:在输入有效载荷中发送额外的元数据条目及其mime类型。
public interface MessageService {

  @RSocketExchange("greeting/{name}")
  public Mono<String> sendMessage(@DestinationVariable("name") String name, @Payload Mono<String> greetingMono);
}

在底层,Spring生成一个实现MessageService接口的代理,并使用底层的RSocketRequester执行交换。

3.生成服务代理

我们知道,Spring boot自动配置会自动配置RSocketRequester。我们的建造者。我们可以使用构建器来创建RSocketRequester。

@Autowired
RSocketRequester.Builder requesterBuilder;
//In any method
RSocketRequester rsocketRequester = requesterBuilder.tcp("localhost", 7000);

最后,我们可以使用RSocketRequester来初始化RSocketServiceProxyFactory,它最终会被用来为任何带有@RSocketExchange方法的RSocket服务接口创建客户端代理。

RSocketServiceProxyFactory factory = RSocketServiceProxyFactory.builder(rsocketRequester).build();
MessageService service = factory.createClient(MessageService.class);

最后,我们可以使用创建的服务代理来调用交换方法。让我们一起来看完整的例子。

@SpringBootApplication
@Slf4j
public class App implements CommandLineRunner {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }
  @Autowired
  RSocketRequester.Builder requesterBuilder;
  @Override
  public void run(String... args) throws Exception {
    RSocketRequester rsocketRequester = requesterBuilder.tcp("localhost", 7000);
    RSocketServiceProxyFactory factory = RSocketServiceProxyFactory.builder(rsocketRequester).build();
    MessageService service = factory.createClient(MessageService.class);
    Mono<String> response = service.sendMessage("Lokesh", Mono.just("Hello there!"));
    response.subscribe(message -> log.info("RSocket response : {}", message));
  }
}

控制台中的程序输出。

...[ctor-http-nio-2] c.h.a.r.controller.MessageController     : Received a greeting from Lokesh : Hello there!
...[actor-tcp-nio-2] c.leftso.app.rsocketexchange.App  : RSocket response : Hello Lokesh!

4. 总结

在这篇简短的Spring教程中,我们学习了Spring 6引入的一个新特性,即使用@RSocketExchange注解创建一个声明式RSocket客户端。我们学习了创建和实例化服务代理,并使用它通过TCP协议连接到远程端点。


 

地址:https://www.leftso.com/article/1118.html

相关阅读

从Spring 6和Spring Boot 3开始,与OpenFeign和Retrofit等其他声明式客户端类似,Spring框架支持以Java接口的形式创建RSocket服务,并为RSocke...
从Spring 6和Spring Boot 3开始,Spring框架支持“HTTP API的问题详细信息”规范RFC 7807。本Spring Boot 教程将详细指导您完成这一新增强。1.问题...
Spring Boot 2.0 有哪些新特性_Spring Boot 2.0新功能,在本文中,我们将探讨为Spring Boot 2.0计划的一些更改和功能。我们还会描述这些变化如何帮助我们提高...
从Spring 6和Spring Boot 3开始,Spring framework支持将远程HTTP服务代理为带有HTTP交换注解方法的Java接口。类似的库,如OpenFeign和Retro...
Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。
spring boot 2.0 security 5.0 整合,实现自定义表单登录。spring boot 2.0框架使用。
Spring Boot 2.1 新特性,已升级Spring 版本为5.1,支持servlet 4.0,支持Tomcat 9.0等等
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...
Spring Boot 2.0 绑定properties属性资源文件 Spring Boot 2.0 读取properties配置文件值 Spring Boot 2.0获取properties配...
Spring Boot 1.x升级到Spring Boot 2.0迁移指南