spring-boot-starter-webfluxをバージョン2.0.0.BUILD-SNAPSHOTで使用してspring-webflux 5.0.0.BUILD-SNAPSHOTを取得した単純なSpring Bootアプリケーションを作成しました。Spring Webfluxと観測可能な応答が機能しない
@RestController
を作成し、Flux<String>
を返すだけの@GetMapping
を指定すると、すべて正常に動作します。
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
私はジャクソンのObjectMapper
は何とかFlux
、Mono
と反応性タイプの残りの部分を登録することが判明したコードを介してビットをデバッグ:私はRxJavaのObservable
へFlux
から変更した場合
はしかし、私はこのエラーを取得しますそのtypeFactoryのため、後でMappingJackson2HttpMessageConverter
はそれらを(de) - 直列化する方法を知っています。私はObservable
を使用する場合
はしかし、それはそうではないのです。私はタイプObservable
またはObjectMapper
のタイプの工場に登録Single
を見つけることができませんので、私は上記のエラーを取得します。
誰でもこの問題を経験しましたか?私はどんな依存関係も見逃していますか? RxJavaの構造から(デ)直列化する方法を手動でジャクソンに伝える必要がありますか?しかし、ジャクソンはなぜFluxとMonoについて知っていますか?
ありがとうございました。
EDITED:私はRxJava 1.2.7を使用してい
。ここに私のpom.xmlがある:
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</dependency>
<!-- RxJava dependeencies -->
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxjava</artifactId>
<version>1.2.7</version>
</dependency>
</dependencies>
そして、ここでは私のコントローラのコードの例です:
/**
* Get all the available tasks.
*
* @return the list of tasks
*/
@GetMapping(path = "/task")
@ResponseStatus(HttpStatus.OK)
public Observable<TaskView> allTasks(@AuthenticationPrincipal LoggedUserVO principal) {
return this.pocComponent.getAllTasks()
.map(t -> ViewConverter.convertFromTaskDocument(t, principal));
}
pom/gradleファイルを投稿できますか?どのRxJavaのバージョンを使用していますか?あなたのコントローラのようなコードも追加してください。 –
春のBootがすでに管理しているので 'version'を削除します.RxjavaにReactive.ioとの統合をさせるには' react-streams'拡張が必要です。反応ストリームは異なる反応実装の統合ポイントです。 –
RxJavaのバージョンを削除すると、1.1.8になります。'reactive-streams'依存性(バージョン1.0.0)は依存性' spring-boot-starter-webflux'によって一時的に得られます。いずれにせよ、まだ動作していません。 –