Spring Boot 2.x实战90 - 响应式编程5 - Reactive 关系型数据库(R2DBC)

4. Reactive关系型数据库-R2DBC

与关系型数据库进行交互的JDBC不具备与数据库异步交互的能力,R2DBC(Reactive Relational Database Connectivity)将响应式编程API带给关系型SQL数据库。

Spring Data R2DBC为此提供支持,同样Spring Boot也提供了starter:spring-boot-starter-data-r2dbc和自动配置:spring-boot-actuator-autoconfigure-r2dbc

在本书编写的时候,R2DBC还在试验阶段,第一个正式版还没有发布;在正式版发布之后,Group(org.springframework.boot.experimental)和版本信息应该会有变化。

新建应用,信息如下:

Group:top.wisely

Artifact:learning-reactive-sql

Dependencies:Spring Reactive WebLombok

我们再添加R2DBC相关依赖,具体依赖如下:

repositories {
	mavenCentral()
	maven { url 'https://repo.spring.io/snapshot' }
	maven { url 'https://repo.spring.io/milestone' }
}
dependencyManagement {
	imports {
		mavenBom("org.springframework.boot.experimental:spring-boot-dependencies-r2dbc:0.1.0.BUILD-SNAPSHOT") //Group和版本会有变化
	}
}
dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-web'
   implementation 'org.springframework.boot.experimental:spring-boot-starter-data-r2dbc'
   implementation 'org.springframework.boot.experimental:spring-boot-actuator-autoconfigure-r2dbc'
   implementation 'io.r2dbc:r2dbc-postgresql' //Postgresql的R2DBC驱动
   implementation 'io.r2dbc:r2dbc-pool' // 数据库连接池
	 implementation 'io.r2dbc:r2dbc-client' // R2DBC客户端
   compileOnly 'org.projectlombok:lombok'
  //...
}

本节使用Postgresql数据库作为演示。

4.1 安装Postgresql

使用docker compose安装MongoDb。

stack.yml

version: '3.1'

services:
  db:
    image: postgres
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_DB: first_db
      POSTGRES_USER: wisely
      POSTGRES_PASSWORD: zzzzzz

执行命令:

$ docker-compose -f stack.yml up -d
4.2 Spring Boot自动配置

Spring Boot提供的自动配置在spring-boot-actuator-autoconfigure-r2dbc包中,主要有:

  • ConnectionFactoryAutoConfiguration:基于连接池的connectionFactory Bean的配置;使用R2dbcProperties通过spring.r2dbc.*进行配置。
    • 数据库连接配置:spring.r2dbc.url
    • 连接池配置:spring.r2dbc.pool.*
  • R2dbcDataAutoConfiguration:自动配置数据库客户端DatabaseClient的Bean,类似于JdbcTemplate,可以直接进行查询:
  • R2dbcRepositoriesAutoConfiguration:使用@EnableR2dbcRepositories开启Spring Data R2DBC Repository的支持;
  • R2dbcTransactionManagerAutoConfiguration:自动配置事务管理器R2dbcTransactionManager的Bean,这样我们可以使用注解@Transactional进行声明式事务处理了。
  • ReactiveTrans

你可能感兴趣的:(Spring,Boot2.x实战全集,Spring,Boot2.x实战,-,响应式编程,spring,boot,spring,data,r2dbc,reactive,关系型数据库)