2017-07-28 58 views
0

我刚才一直在阅读关于Spring和电抗器尽我所能,做意识到,将反应器应该被包含在即将到来的Spring框架5(在生产BTW使用这个人?)基于反应堆的Spring MVC是什么?

我的兴趣是用它Spring MVC,因为它目前不是框架的一部分,在Spring MVC中如何使用Reactor?从网上的例子看来,在等待Framework 5的时候,现在在Spring中使用Reactor,就是使用reactor-bus。

Spring MVC + Reactor是否只是将反应器总线添加到MVC应用程序?

看看Github显示反应堆总线似乎处于传统模式?

什么是当前的方式给现有的Spring MVC反应能力?

回答

2

Spring 5和WebFlux会给你带来最大的好处,因为框架本身使用的是反应式编程,并且是完全非阻塞的,如果你的数据库也是异步的,就会有机会出现端到端的异步性(想想Cassandra ,Redis,MongoDB,Couchbase以及反应式Spring Data Kay)。

也就是说,即使您的应用程序没有完全反应,类似Reactor的库也可以带来好处。例如,如果您有一个需要大量编排的服务层。如果这些服务将任务表示为异步类型(理想情况下为Flux/Mono/Publisher,而且Future),则可以将它们桥接到Reactor并使用强大的运算符来构建复杂的异步处理管道。

最后一部分是让Spring 4.x使用这些异步结果。框架有一个DeferredResult<T>类型的支持形式,你可以从FluxMono获得(下面的例子是简单的,并没有显示我上面提到的操作符的组成,它将隐藏在服务中):

@GetMapping() 
public DeferredResult<User> getCurrentUser() { 
    DeferredResult<User> result = new DeferredResult(); 
    Mono<User> mono = myService.getCurrentUser(); 
    mono.subscribe(
     value -> result.setResult(value), 
     error -> result.setErrorResult(error) 
    ); 
    return result; 
} 
相关问题