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

Posted

技术标签:

【中文标题】路由器和带注释的控制器有啥区别?【英文标题】:What is the difference between Router and Annotated Controllers?路由器和带注释的控制器有什么区别? 【发布时间】:2019-01-18 01:09:53 【问题描述】:

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

    带注释的控制器:如 @Controller@RestControllerRouterFunctionRouterFunction 用于将请求路由到 HandlerFunction

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

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

谢谢我的朋友们!

【问题讨论】:

'@RestControlle' = '@Controller' + '@ResponseBody' 默认在方法上 是的,对。我只是举个例子。 【参考方案1】:

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

在性能上 2 是否比 1 好?

不,性能上没有区别。

我发现2比1更难用

这完全取决于个人喜好。可能是你习惯了命令式的编程风格。因此你觉得写起来很容易(相信我,过一段时间你也会对路由器函数有同样的感觉)

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

【讨论】:

好吧。非常感谢!我理解了一部分。 @MrXionGe 你不明白哪一部分 首先,感谢您的关注。关于 Mono 和 Flux。使用 Mono 或 Flux 与不使用有什么区别?我认为它们在性能上没有太大差异。因为我通过 JMeter 进行了测试 您的原始问题与“使用 Mono 或 Flux 有什么区别”无关【参考方案2】:

RouterFunction 的用途与注解相似。但是,有一个重要的区别:使用注解,您的路由仅限于可以通过注解值表达的内容。

【讨论】:

请你举一两个例子,说明功能配置比注释更进一步? jivimberg.io/blog/2018/05/20/spring-functional-router - 请看这篇文章【参考方案3】:

如果我们保留个人偏好,则过滤器有一个明显的区别。

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

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

【讨论】:

非常感谢。WebFlux 中没有拦截器。当然,WebFilter 是...

以上是关于路由器和带注释的控制器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

爱快硬路由和软路由系统有啥区别

react路由器中的hashHistory和browserHistory有啥区别?

React Router v4 路由器类型之间有啥区别?

基于IOS的交换机和基于CLI的交换机有啥区别,在配置时可以互相转换不

无线路由器ap模式和router模式有啥区别

在 Angular 2+ 中,使用路由器插座和嵌套组件有啥区别