Spring Boot 2.x实战88 - 响应式编程3 - Reactive NoSQL之Reactive ElasticSearch

3. Reactive NoSQL

上面我们的Repository是非响应式的,而响应式编程要求全栈技术都是响应式,所以这节我们讨论响应式的Spring Data。目前Spring Data支持的响应式的NoSQL有:

  • MongoDB:使用spring-boot-starter-data-mongodb-reactive依赖;
  • Redis:使用spring-boot-starter-data-redis-reactive依赖;
  • Cassandra:使用spring-boot-starter-data-cassandra-reactive依赖;
  • Couchbase:使用spring-boot-starter-data-couchbase-reactive依赖;
  • Elasticsearch:使用spring-boot-starter-data-elasticsearch依赖;
3.1 响应式Elasticsearch

本节依然使用Elasticsearch作为演示:

新建应用,信息如下:

Group:top.wisely

Artifact:learning-reactive-nosql

Dependencies:Spring Reactive WebSpring Data ElasticsearchLombok

build.gradle文件中的依赖如下:

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
   implementation 'org.springframework.boot:spring-boot-starter-webflux'
   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'
	//...
}
3.1.1 Spring Boot的自动配置

Spring Boot自2.2.0版本开始支持响应式Elasticsearch的自动配置,自动配置文件为:

  • ReactiveElasticsearchRepositoriesAutoConfiguration:通过@EnableReactiveElasticsearchRepositories开启响应式Elasticsearch Repository的支持;

  • ElasticsearchDataAutoConfiguration:通过导入lasticsearchDataConfiguration.ReactiveRestClientConfiguration来配置响应式操作模板ReactiveElasticsearchTemplate的Bean;

  • ReactiveRestClientAutoConfiguration:通过ReactiveRestClientProperties,以spring.data.elasticsearch.client.reactive.*开头来配置响应式Elasticsearch客户端ReactiveElasticsearchClient的Bean。

3.1.2 示例

首先我们配置连接Elasticsearch:

spring:
  data:
    elasticsearch:
      client:
        reactive:
          endpoints: localhost:9200

下面我们的工作和Spring Data的其它项目是类似的,我们先定义领域模型:

//...
import org.springframework.data.elasticsearch.annotations.Document;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "person")
public class Person {
   
    @Id
    private String id;
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
   
        this.name = name;
        this.age = age;
    }
}

然后我们再进行Repository的定义,此处我们继承的是ReactiveElasticsearchRepository

//...
import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository;

public interface PersonRepository extends ReactiveElasticsearchRepository
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值