第31-32节:Project Reactor介绍
Project Reactor学习(1)–核心接口简介
Reactor项目核心为reactor-core,一个基于Java8的响应式流标准实现,实现了reactive streams标准。
reactive streams标准核心接口有四个:
- Publisher
- Subscriber
- Subscription
- Processor<T,R>
其中最重要的接口为Publisher,代表了一个响应式的流。
Publisher核心实现为Flux和Mono。
Flux
Flux代表了一个可以返回0…N个元素的响应式流。
该流起始于subscribe信号,根据request信号持续返回数据,结束于completion信号或者error信号。
Mono
Mono 也是标准的Publisher的实现,代表了一个可以返回0或1个元素的数据流。
该流接收到onComplete时返回一个元素并结束,接收到onError信号时返回0个元素并结束。
Mono可以用于表示无数据返回的异步流程,如等同于Runnable的概念,此时可以使用Mono。
第33节通过Reactive方式访问Redis
对Redis的一些支持:
Lettuce能够支持Reactive方式
Spring Data中主要的支持:
- ReactiveRedisConnection
- ReactiveRedisConnectionFactory
- ReactiveRedisTemplate
- opsForXxx()
代码引入依赖:
org.springframework.boot
spring-boot-starter-data-redis-reactive
第34节通过Reactive的方式访问MongoDB
MongoDB官方提供了Reactive的驱动
- mongodb-driver-reactivestreams
Spring Data MongoDB中的主要支持: - ReactiveMongoClientFactoryBean
- ReactiveMongoDatabaseFactory
- ReactiveMongoTemplate
第35节 通过Reactive的方式访问RDBMS
Spring Dara R2DBC
R2DBC(https://spring.io/projects/spring-data-r2dbc)
- Reactive Relational Database Connectivity
支持的数据库 - Postgres(io.r2dbc:r2dbc-postgresql)
- H2 (io.r2dbc:r2dbc-h2)
- Microsoft SQL Server(io.r2dbc:r2dbc-mssql)
一些主要的类: - ConnectionFactory
- DatabaseClient
- execute().sql(SQL)
- select() / insert()
- inTransaction(db -> {})
- R2dbcExceptionslator
- SqlErrorCodeR2dbcExceptionTranslator
R2DBC Repository支持
一些主要类: - @EnableRdbcRepositories
- ReactiveCrudRepository<T, ID>
- @Table / @Id
- 其中的方法返回都是Mono或者Flux
- 自定义查询需要自己写@Query
第36-37节通过AOP打印数据访问层的摘要
常用注解:
@EnableAspectJAutoProxy(表示开启AOP代理自动配置,如果配@EnableAspectJAutoProxy表示使用cglib进行代理对象的生成)
@Aspect
@Pointcut
@Before
@After / @AfterReturning / @AfterThrowing
@Around
@Order 用来指定切面的执行顺序,order数越小优先级越高
第38节本章小结