2016-10-20 48 views
1

我想從spring的mvc控制器返回Observable。它的工作原理與Single如何讓spring引導mvc瞭解observables?

@GetMapping Object a() {return Single.just(1);} 

預期我得到1當我查詢服務器。但是當我做同樣的Observable

@GetMapping Object a() {return Observable.just(1);} 

我得到的答案是{}。 spring-mvc不會訂閱返回的Observable,只是將其序列化爲json。可以彈簧mvc瞭解Observable開箱,我只是搞砸了一些配置?還是我必須註冊我的自定義處理程序或安裝一些插件?

回答

3

您可以使用Spring MVC Reactive(但它目前不作爲最終版本發佈)。它適用於反應堆和RxJava。你就可以寫出這種控制器:

@Test 
class ExampleController { 
     @RequestMapping("/hello") 
     public Single<String> hello() { return Single.just("world"); } 
} 

或者你可以寫自己的類適配器和變換Single作爲春季DeferredResult(見本example

這個例子從Spring Boot Starter卡梅斯你可能想要直接使用。

+0

測試這個我沒有用'Single'class問題。它目前工作。我需要的是'Observable' – piotrek

+0

那就是同樣的想法。 (用Observable取代Single)。 – dwursteisen

0

spring-cloud-netflix中有一個返回值處理函數。下面的pom依賴對我有用。

<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-netflix-core</artifactId> 
    </dependency> 

我與rx 1.x

<dependency> 
     <groupId>io.reactivex</groupId> 
     <artifactId>rxjava</artifactId> 
     <version>1.1.10</version> 
    </dependency>