【问题标题】:Spring 5 Web Reactive - Clarification about DTO response body conversionSpring 5 Web Reactive - 关于 DTO 响应正文转换的说明
【发布时间】:2017-01-23 11:38:38
【问题描述】:

根据doc

响应正文可以是以下之一:

  • Account — 在不阻止给定帐户的情况下进行序列化;意味着一个同步的、非阻塞的控制器方法。

为什么同步控制器方法可以是非阻塞的?听起来很矛盾。

【问题讨论】:

    标签: spring spring-mvc reactive-programming project-reactor spring-webflux


    【解决方案1】:

    这里是一个同步的、非阻塞的控制器方法的例子:

    @GetMapping("/sample/account")
    public Account sample() {
      return new Account("codependent");
    }
    

    它是同步的,因为它不返回表示延迟结果的类型(如MonoFlux)。它是非阻塞的,因为没有执行阻塞操作(I/O、等待共享资源等)。

    你可以用Mono 来包装它,比如Mono.just(new Account("codependent")),但你会无缘无故地为这种异步类型付出代价。

    【讨论】:

    • 所以这应该只在控制器方法不做任何阻塞的时候使用。关键是我看不到很多适用的情况,我的意思是:如果我们做一些异步的事情,我们将有一个 Mono,如果我们做一些阻塞的事情,它不会在没有阻塞的情况下被序列化......顺便说一句,感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多