路由器和带注释的控制器有什么区别?

时间:2018-08-10 12:05:49

标签: spring-mvc spring-boot spring-webflux

我正在使用WebFlux进行Web开发。 我发现了两种表达请求映射的方法。

  1. 带注释的控制器:类似于@Controller@RestController
  2. RouterFunctionRouterFunction用于将请求路由到HandlerFunction

我发现第二个比第一个更难使用,而且我也不知道它们之间的区别。

所以我想问哪一个表现更好2或1?

谢谢我的朋友们!

3 个答案:

答案 0 :(得分:9)

让我从您的最后一个问题开始

  

2在性能上是否优于1?

不,性能没有差异。

  

我发现2比1更难使用

这绝对是基于个人偏好。可能是您习惯了命令式的编程风格。因此,您可以轻松编写代码(过一会儿,请相信我,您也会对Router Functions感到满意)

基本上,路由器功能是迈向编程功能风格的第一步。 Spring希望用户能够灵活地以功能样式配置路由。
除此之外,控制器和路由器功能之间没有区别。

答案 1 :(得分:1)

如果我们保留个人偏好,则过滤器之间会有一个明显的差异。

WebFlux框架提供两种类型的过滤器: WebFilters HandlerFilterFunctions

它们之间的主要区别是WebFilter实现可用于所有端点,而HandlerFilterFunction实现仅适用于基于路由器的端点。

答案 2 :(得分:1)

RouterFunction具有与注释相似的目的。但是,有一个重要的区别:使用注释时,您的路线仅限于可以通过注释值表示的路径。