JaversBuilder.build()
始终调用MongoRepository.ensureSchema()
来为createIndex()
执行jv_snapshots
,即使索引已经存在。
特别是,createIndex
权限被吊销了,因为此命令在前台执行时会阻止Mongo实例上的所有其他操作(不仅是数据库,例如MongoDB文档中的数据库)。
在ensureSchema
外部为应用程序配置Javers时,可能会调用JaversBuilder.build()
。示例:
@Bean
public Javers javers() {
MongoRepository repository = new MongoRepository(mongoClient.getDatabase(databaseName));
Javers javers = JaversBuilder.javers().registerJaversRepository(repository).build();
repository.ensureSchema();
return javers;
}
建议从ensureSchema
中删除对JaversBuilder.build()
的调用是合适的,还是有另一种方法可以避免在非Spring Boot应用程序启动时创建索引?