2016-10-20 4 views
1

スプリングのmvcコントローラからObservableを返信します。それはSingleで動作します:春のブートmvcを観察する方法を理解する方法?

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

私は、サーバーを照会するとき、私は1を得る予想通り。私はObservableと同じことを行うときには:

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

私が得た答えは{}です。 spring-mvcは返されたObservableを購読しませんが、それを単にjsonにシリアル化します。私はちょっと気になっています。またはカスタムハンドラを登録するかプラグインをインストールする必要がありますか?

答えて

3

Spring MVC Reactiveを使用できます(ただし、現在最終版としてリリースされていません)。 ReactorとRxJavaで動作します。あなたは、コントローラのこの種を書くことができるようになります:

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

か、あなたは独自のクラスアダプタを書いて、春DeferredResultとしてSingleを変換することができます(このexampleを参照)

この例では、Spring Boot Starterからcamesあなたは直接使用したいかもしれません。

+0

でこれをテストしています。それは現在働く。私が必要としているのは 'Observable'です。 – piotrek

+0

それは同じ考えです。 (ObservableによってSingleを置き換えます)。 – dwursteisen

0

spring-cloud-netflixに戻り値ハンドラがあります。以下のポムの依存関係が私のために働いた。

<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> 

私は私が `Single`classに問題を持っていないrx 1.x

<dependency> 
     <groupId>io.reactivex</groupId> 
     <artifactId>rxjava</artifactId> 
     <version>1.1.10</version> 
    </dependency> 
関連する問題