我正在开发一个使用 Kotlin、Spring Boot、Hibernate(全部在最新版本上)的项目,我想让它与 Spring 的 WebFlux 框架反应。
问题是我不能使用ReactiveCrudRepository
,因为 Web 应用程序必须使用 Oracle 数据库,因此需要使用 Hibernate。所以我想不出如何使用非阻塞访问 Oracle SQL 数据库(仅限免费框架)的方法。
我的问题是:
是否可以这样使用:
CrudRepository
阻塞的休闲- 使用 corountines 并将所有内容返回为的服务
Mono
服务示例代码:
fun getAllLanguages(): Mono<Collection<ProgrammingLanguage>> = async { repository.findAll() }.asMono()
之后将有控制器:
fun listProgrammingLanguagesReactive() = mono(Unconfined) {
service.also { logger.info { "requesting list of programming languages" } }
.getAllLanguages()
.also { logger.info { "responding with list of programming languages" } }
}
这种方法有效,但我不确定它是否会一直有效,以及这是否不是糟糕的做法等等。