【问题标题】:Filters for webflux spring boot app, which return ResponseEntity<?>webflux spring boot 应用程序的过滤器,返回 ResponseEntity<?>
【发布时间】:2019-06-10 13:14:09
【问题描述】:

我的 Spring Boot 应用程序配置为反应式。但是我的 REST API 端点配置为返回没有 Mono 或 Flux 的 ResponseEntity。

@GetMapping("/wiki/test")
    public ResponseEntity<?> test() {
        log.info("TEST CALLED????");
        return ResponseEntity.ok().body("HALLO");
    }

我想实现过滤器,它将检查每个端点的传入标头。旧的 Servlet 过滤器当然不起作用,对于 webflux 和其他的新 WebFilter 也不起作用。

我的项目位于githubwiki controller

我不想使用基于路由器的端点,我更喜欢 Spring boot 下的 Netty。我可以同时使用哪种过滤器:反应式和 servlet 应用程序?有什么建议吗?

【问题讨论】:

  • 你为什么不返回 Mono
  • 我应该在每个响应中添加一个 Mono,想象一下大型应用程序,人们已经编写了类似使用 ResponseEntity 的代码,所以我想将 tomcat 更改为 webflux,但我不想在 Rest Controller 中进行函数式编程。

标签: java spring-boot reactive-programming spring-webflux


【解决方案1】:

如果您的问题是“我将编写什么样的代码来在反应式和非反应式 Spring 应用程序中用作过滤器,答案是您不能。您可以编写一个简单的类/bean,从不过,WebFilter 或 Filter 都可以。

【讨论】:

  • 我想使用 Spring boot + netty,但我不想在 REST 控制器中使用函数式编程。
  • 这就像说您想驾驶特斯拉但使用汽油为其提供动力。使用 Netty 时您需要编写非阻塞代码,否则您的服务器将只能支持每个 cpu 核心一次处理一个事务。 Spring Webflux 和 Spring MVC 根本不同,因为它们工作的环境完全不同。
  • 是的,为什么我喜欢 vertx,我认为函数式编程不适合控制器,webflux 很有趣,但应该改进。谢谢
猜你喜欢
  • 2020-05-24
  • 2021-11-03
  • 2020-03-24
  • 1970-01-01
  • 2018-10-31
  • 2019-08-13
  • 2018-10-22
  • 2018-03-14
  • 1970-01-01
相关资源
最近更新 更多