对于最新的稳定版本,请使用 Spring Data Couchbase 5.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Couchbase 5.3.1Spring中文文档

介绍

本章介绍对 couchbase 的响应式存储库支持。 这建立在 Couchbase 存储库中解释的核心存储库支持之上。 因此,请确保您对那里解释的基本概念有充分的理解。Spring中文文档

反应式组合库

Couchbase Java SDK 3.x 从 RxJava 迁移到了 Reactor,因此它与响应式 Spring 生态系统很好地融合在一起。Spring中文文档

Reactive Couchbase 存储库提供项目 Reactor 包装器类型,只需从特定于库的存储库接口之一扩展即可使用:Spring中文文档

用法

让我们创建一个简单的实体来开始:Spring中文文档

例 1.Sample Person 实体
public class Person {

  @Id
  private String id;
  private String firstname;
  private String lastname;
  private Address address;

  // … getters and setters omitted
}

相应的存储库实现可能如下所示:Spring中文文档

例 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,请使用注释。 注释带有与命名空间元素完全相同的属性。 如果未配置基本包,基础结构将扫描带注释的配置类的包。@EnableReactiveCouchbaseRepositoriesSpring中文文档

另请注意,如果您在 Spring Boot 设置中使用它,则可以省略注释,因为它是为您自动配置的。Spring中文文档

例 3.用于存储库的 JavaConfig
@Configuration
@EnableReactiveCouchbaseRepositories
class ApplicationConfig extends AbstractCouchbaseConfiguration {
	// ... (see configuration for details)
}

随着我们的域存储库的扩展,它为您提供了 CRUD 操作以及对实体进行排序访问的方法。 使用存储库实例只是将其注入客户端的依赖关系问题。ReactiveSortingRepositorySpring中文文档

例 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 带有完整的查询支持,该支持已经由阻塞存储库和查询提供Spring中文文档