在Spring WebFlux中创建多个RouterFunction

本文探讨了在Spring WebFlux中如何为不同逻辑域定义多个RouterFunction,以保持代码分离。通过创建独立的bean,每个域可以有自己的路由,Spring会自动收集并合并这些bean,实现请求的正确路由。文中还介绍了如何实现这一过程,以及为何这样做有助于维护和组织代码。
摘要由CSDN通过智能技术生成

在这篇文章中,我们将研究在Spring WebFlux中为不同的逻辑域定义多个路由器功能。 如果您正在创建“微服务”,则可能不会出现问题,因为您很可能仅在每个服务的单个域中工作,但是如果不是这样,则可能需要在应用程序中包含多个域,用户或您自己的服务可以进行交互。 做到这一点的代码就像我希望的那样简单,可以用几句话来解释。 为了使本文更加有趣,我们将看一些使这一切成为可能的Spring代码。

如果您不熟悉WebFlux,建议您阅读我以前的文章[使用Spring WebFlux做事]( https://lankydanblog.com/2018/03/15/doing-stuff-with-spring-webflux/ ),在这里,我写了一些有关该主题的详尽示例和解释。

因此,让我们先设置场景。 您的应用程序内有两个不同的域,例如人和地点。 您可能希望不仅在逻辑上而且在代码内使它们彼此分开。 为此,您需要一种独立于彼此域定义路由的方法。 这就是我们将在这篇文章中看到的内容。

如果您认为您已经知道该问题的答案,那么您可能是对的。 真的就是这么简单。 让我们继续努力吧。 要仅为人员域创建路由,请创建一个RouterFunction bean,该bean映射到相关的处理程序函数,如下所示。

@Configuration
public class MyRouter {
  // works for a single bean
  @Bean
  public RouterFunction<ServerResponse> routes(PersonHandler personHandler) {
    return RouterFunctions.route(GET("/people/{id}").and(accept(APPLICATION_JSON)), personHandler::get)
        .andRoute(GET("/people").and(accept(APPLICATION_JSON)), personHandler::all)
        .andRoute(POST("/people").and(accept(APPLICATION_JSON)).and(contentType(APPLICATION_JSON)), personHandler::post)
        .andRoute(PUT("/people/{id}").and(accept(APPLICATION_JSON)).and(contentType(APPLICATION_JSON)), personHandler::put)
        .andRoute(DELETE("/people/{id}"), personHandler::delete)
        .andRoute(GET("/people/country/{country}").and(accept(APPLICATION_JSON)), personHandler::getByCount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值