对于最新的稳定版本,请使用 Spring Data Couchbase 5.4.0! |
反应式 Couchbase 存储库
介绍
本章介绍了 couchbase 的反应式存储库支持。 这建立在 Couchbase 存储库中解释的核心存储库支持之上。 因此,请确保您对其中解释的基本概念有很好的理解。
响应式组合库
Couchbase Java SDK 3.x 从 RxJava 迁移到 Reactor,因此它与反应式 Spring 生态系统很好地融合在一起。
反应式 Couchbase 存储库提供项目 Reactor 包装器类型,只需从特定于库的存储库接口之一扩展即可使用:
-
ReactiveCrudRepository 存储库
-
ReactiveSortingRepository
用法
让我们创建一个简单的实体来开始:
示例 1.示例 Person 实体
public class Person {
@Id
private String id;
private String firstname;
private String lastname;
private Address address;
// … getters and setters omitted
}
相应的存储库实现可能如下所示:
示例 2.用于持久保存 Person 实体的基本存储库界面
public interface ReactivePersonRepository extends ReactiveSortingRepository<Person, Long> {
Flux<Person> findByFirstname(String firstname);
Flux<Person> findByFirstname(Publisher<String> firstname);
Flux<Person> findByFirstnameOrderByLastname(String firstname, Pageable pageable);
Mono<Person> findByFirstnameAndLastname(String firstname, String lastname);
}
对于 JavaConfig,请使用 Comments。
注解带有与 namespace 元素完全相同的属性。
如果未配置基本包,则 infrastructure 将扫描带注释的配置类的包。@EnableReactiveCouchbaseRepositories
另请注意,如果您在 Spring Boot 设置中使用它,则可以省略 Comments,因为它是为您自动配置的。
例 3.存储库的 JavaConfig
@Configuration
@EnableReactiveCouchbaseRepositories
class ApplicationConfig extends AbstractCouchbaseConfiguration {
// ... (see configuration for details)
}
随着我们的域存储库的扩展,它为您提供了 CRUD 操作以及对实体的排序访问方法。
使用存储库实例只是将其注入客户端的依赖项问题。ReactiveSortingRepository
示例 4.对 Person 实体的排序访问
public class PersonRepositoryTests {
@Autowired
ReactivePersonRepository repository;
@Test
public void sortsElementsCorrectly() {
Flux<Person> persons = repository.findAll(Sort.by(new Order(ASC, "lastname")));
assertNotNull(perons);
}
}
存储库和查询
Spring Data 的 Reactive Couchbase 带有完整的查询支持,这些支持已经由阻塞的 Repositories 和 Querying 提供