第31-32节:Project Reactor介绍

《玩转Spring全家桶》总结第31-32节
《玩转Spring全家桶》总结第31-32节
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个元素的响应式流。
《玩转Spring全家桶》总结第31-32节
该流起始于subscribe信号,根据request信号持续返回数据,结束于completion信号或者error信号。
Mono
Mono 也是标准的Publisher的实现,代表了一个可以返回0或1个元素的数据流。
《玩转Spring全家桶》总结第31-32节
该流接收到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打印数据访问层的摘要

《玩转Spring全家桶》总结第31-32节
常用注解:
@EnableAspectJAutoProxy(表示开启AOP代理自动配置,如果配@EnableAspectJAutoProxy表示使用cglib进行代理对象的生成)
@Aspect
@Pointcut
@Before
@After / @AfterReturning / @AfterThrowing
@Around
@Order 用来指定切面的执行顺序,order数越小优先级越高
《玩转Spring全家桶》总结第31-32节
第38节本章小结
《玩转Spring全家桶》总结第31-32节

相关文章: