Kyo*_*Lee 6 database reactor mongodb kotlin spring-boot
我是小白在spring和mongo和noSQL。
我已在本地连接到我的 mongoDB。
然而,我试图拯救我的实体一直失败。
val a0 = myEntity(name = "my Entity")
repository.save(a0)
Run Code Online (Sandbox Code Playgroud)
我的存储库扩展了ReactiveMongoRepository<MyEntity, Long>.
但是当我将它更改为 extend 时MongoRepository<MyEntity, Long>,它就起作用了。
可能是什么问题?
我的数据库实例正在运行并且工作正常。我猜它必须对反应性事物做些什么。
g00*_*00b 15
如果您使用反应式流,您应该知道在您订阅之前什么都不会发生:
在 Reactor 中,当您编写
Publisher链时,默认情况下数据不会开始注入其中。相反,您创建异步流程的抽象描述(这有助于可重用性和组合)。通过订阅行为,您将 绑定
Publisher到 aSubscriber,这会触发整个链中的数据流。这是通过从Subscriber上游传播到源的单个请求信号在内部实现的Publisher。
这意味着,如果你使用ReactiveMongoRepository, 沿着这条线的某个地方你必须订阅你的反应流。这可以通过使用subscribe()any 上的方法来完成Publisher。例如,使用 Java,这将是:
reactiveRepository
.save(myEntity)
.subscribe(result => log.info("Entity has been saved: {}", result));
Run Code Online (Sandbox Code Playgroud)
此外,如果您编写反应式控制器,像 Webflux 这样的框架将为您处理订阅。使用 Java 意味着您可以编写如下内容:
@GetMapping
public Mono<MyEntity> save() {
return reactiveRepository.save(myEntity); // subscribe() is done by the Webflux framework
}
Run Code Online (Sandbox Code Playgroud)
显然,响应式编程远不止这些,您应该意识到,如果不适应响应式生态系统并使用响应式编程,就不能简单地切换MongoRepository到ReactiveMongoRepository。
Reactor 参考指南中的Introduction to Reactive Programming一章可能很有趣。前面引用的文档也来自参考指南的这一章。
| 归档时间: |
|
| 查看次数: |
2917 次 |
| 最近记录: |