Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time

Spring Reactive Sample

This is a sandbox project for demonstrating Reactive Streams support in Spring framework and Spring ecosystem.

I've also maintained a series of repos related to ReativeStreams and the latest Spring 5.


Read online:

Sample Codes

The following table list all sample codes related to the above posts.

Spring Samples

name description
vanilla The initial application, includes basic spring-webflux feature, use a main class to start up the application
vanilla-jetty Same as vanilla, but use Jetty as target runtime
vanilla-tomcat Same as vanilla, but use Reactor Netty as target runtime
vanilla-undertow Same as vanilla, but use Undertow as target runtime
java8 Java 8 CompletableFuture and @Async example
java9 Same as vanilla, Java 9 Flow API support is not ready in Spring 5.0.0.REALESE, planned in 5.0.1, see issue SPR-16052 and the original discussion on stackoverflow
rxjava Same as vanilla, but use Rxjava instead of Reactor
rxjava-jdbc Accessing database with rxjava-jdbc. NOTE: rxjava-jdbc is a wrapper of blocking Jdbc APIs
rxjava2 Same as vanilla, but use Rxjava2 instead of Reactor
rxjava2-jdbc Accessing database with rxjava2-jdbc. NOTE: rxjava2-jdbc is a wrapper of blocking Jdbc APIs
rxjava3 Same as vanilla, but use Rxjava3 instead of Reactor, since Spring 5.3
war Replace the manual bootstrap class in vanilla with Spring ApplicationInitializer, it can be packaged as a war file to be deployed into an external servlet container.
routes Use RouterFunction instead of controller in vanilla
register-bean Programmatic approach to register all beans in ApplicatonContext at the application bootstrap
data-neo4j Spring Data Neo4j reactive example
data-mongo Spring Data Mongo Reactive example
data-mongo-pageable Spring Data Mongo Reactive example with pagination support
data-mongo-transaction Spring Data Mongo Reactive example with Transaction support
data-redis Spring Data Redis Reactive example
data-redis-message Spring Data Redis Reactive Example with ReactiveRedisMessageListenerContainer
data-cassandra Spring Data Cassandra Reactive example
data-couchbase Spring Data Couchbase Reactive example
data-r2dbc Spring Data R2dbc Example. (Deprecated, go to hantsy/spring-r2dbc-sample to update yourself)
data-r2dbc-postgresql Spring Data R2dbc Example, but use PostgreSQL instead(Deprecated)
security Based on vanilla, add Spring Security Reactive support
security-form Same as security, login form example
security-user-properties Same as security, but use to store users
security-method Replace URI based configuration with method level constraints
security-data-mongo Based on data-mongo and security, replace with dummy users in hard codes with Mongo driven store
multipart Multipart request handling and file uploading
multipart-data-mongo Multipart and file uploading, but data in Mongo via Spring Data Mongo Reactive GridFsTemplate
mvc-thymeleaf Traditional web application, use Thymeleaf as template engine
mvc-mustache Traditional web application, use Mustache as template engine
mvc-freemarker Traditional web application, use freemarker as template engine
sse Server Send Event example
websocket WebSocket example
web-filter WebFilter example
groovy Written in groovy
groovy-dsl Groovy DSL bean definition example
client Example of WebClient to shake hands with backend reactive APIs
kotlin Written in kotlin
kotlin-routes Use kotlin functional approach to declare beans and bootstrap the application programmatically
kotlin-dsl Kotlin DSL bean definition example
session Spring Session Example
session-header Spring Session WebSessionIdResolver Example
session-data-redis Spring Data Redis based ReactiveSessionRepository Example
session-data-mongo Spring Data Mongo based ReactiveSessionRepository Example
exception-handler Exception Handler Example
integration Spring Integration Example
integration-dsl Spring Integration Java 8 DSL Example
restdocs Spring RestDocs Example

Spring Boot Samples

name description
boot-start Switch to Spring Boot to get autoconfiguration of Spring WebFlux
boot-start-routes Simple RouterFunction example
boot-jetty Example using Jetty as target runtime
boot-tomcat Example using Tomcat as target runtime
boot-undertow Example using Undertow as target runtime
boot-routes RouterFunction CRUD Example
boot-mvc-thymeleaf Same as mvc-thymeleaf, but based on Spring Boot
boot-mvc-mustache Same as mvc-mustache, but based on Spring Boot
boot-mvc-freemarker Same as mvc-freemarker, but based on Spring Boot
boot-groovy Written in Groovy
boot-kotlin Written in Kotlin
boot-kotlin-dsl Kotlin specific BeanDefinitionDSL Example
boot-redis Example of using ReactiveRedisConnection and RouterFunction
boot-data-redis Spring Data Redis Example
boot-r2dbc Spring Data R2dbc example using DatabaseClient(Deprecated)
boot-data-r2dbc Spring Data R2dbc example(Deprecated)
boot-data-r2dbc-auditing @EnableR2dbcAuditing example(Deprecated)
boot-data-r2dbc-postgresql Same as boot-data-r2dbc, but use PostgresSQL instead(Deprecated)
boot-data-r2dbc-mysql Same as boot-data-r2dbc, but use MySQL instead(Deprecated)
boot-data-r2dbc-mssql Same as boot-data-r2dbc, but use MS SQL instead(Deprecated)
boot-neo4j-rx SDN Rx Example but use ReactiveNeo4jClient(Deprecated)
boot-neo4j-rx-cypher SDN Rx Example using Cypher queries(Deprecated)
boot-data-neo4j-rx SDN Rx Example(Deprecated)
boot-data-neo4j Spring Data Neo4j example (Spring Boot 2.4)
boot-neo4j Spring Data Neo4j using ReactiveNeo4jOperations (Spring Boot 2.4)
boot-neo4j-cypher Spring Data Neo4j using ReacitveNeo4jClient (Spring Boot 2.4)
boot-data-cassandra Spring Data Cassandra Example
boot-data-couchbase Spring Data Couchbase Example
boot-data-elasticsearch Spring Data ElasticSearch Example
boot-data-mongo Spring Data Mongo Example
boot-data-mongo-auditing @EnableReactiveMongoAuditing and ReactiveAuditorAware example
boot-data-mongo-querydsl Spring Data Mongo Example with QueryDSL support
boot-data-mongo-gridfs Spring Data Mongo Example with Gridfs support
boot-exception-handler Global Exception Handler


Special Thanks

Specials thanks for Jetbrains's support by contributing an open-source license.