13.2.2 创建响应式 Cassandra Repository

到目前为止,您可能已经期望响应式 Cassandra Repository 与等效的非响应性 Repository 看起来是一样的。如果是这样,那真是太好了!您跟上了 Spring Data 的步伐。无论 Repository 是否是响应式的,都尽可能的使用类似的编程模型。

您可能已经猜到了,使 Repository 是响应式的,主要就是扩展 ReactiveCrudRepository 接口。如下图中的 IngredientRepository 所示:

package tacos.data;

import org.springframework.data.repository.reactive.ReactiveCrudRepository;

import tacos.Ingredient;

public interface IngredientRepository
      extends ReactiveCrudRepository<Ingredient, String> {
}

当然,OrderRepository 也是如此:

package tacos.data;

import java.util.UUID;

import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;

import reactor.core.publisher.Flux;
import tacos.TacoOrder;
import tacos.User;

public interface OrderRepository
      extends ReactiveCrudRepository<TacoOrder, UUID> {

  Flux<TacoOrder> findByUserOrderByPlacedAtDesc(
      User user, Pageable pageable);
}

事实上,这些 Repository 不仅让人联想到它们的非响应式对应库,它们与我们在本章前面编写的 MongoDB Repository 也没有太大区别。除了 Cassandra 使用 UUID 作为 ID 类型,而不是 TacoOrder 的字符串,它们实际上是完全相同的。这再次证明了 Spring Data 中采用的一致性设计思想(尽可能的)。

让我们通过编写几个测试,来结束编写响应式 Cassandra Repository 的工作,并验证它们是否有效。

results matching ""

    No results matching ""