This is a sandbox project for demonstrating Reactive Streams support in Spring framework and its ecosystem.
- Reactive Programming with Spring 5(Deprecated)
- Reactive Data Access with Neo4j
- Reactive Data Access with R2dbc
The following table list all sample codes related to the above posts.
| 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-reactor-netty | Same as vanilla, but use Reactor Netty as target runtime |
| vanilla-reactor-netty | Same as vanilla, but use Undertow as target runtime |
| 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 |
| rxjava2 | Same as vanilla, but use Rxjava2 instead of Reactor |
| 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 application bootstrap |
| data-mongo | Demonstration of Spring Data Mongo reactive support |
| data-redis | Demonstration of Spring Data Redis reactive support |
| data-cassandra | Demonstration of Spring Data Cassandra reactive support |
| data-couchbase | Demonstration of Spring Data Couchbase reactive support |
| security | Based on vanilla, add secuirty for spring webflux support |
| security-user-properties | Same as secuirty, but use users.properties 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 | Mutipart request handling and file uploading |
| multipart-data-mongo | (PENDING)Multipart and file uploading, but data in Mongo via Spring Data Mongo, waitng for Reactive support for GridFsTemplate |
| mvc-thymeleaf | Traditinal web mvc application, use Thymeleaf specific Reactive view resolver to render view |
| mvc-freemarker | Traditinal web mvc application, use freemarker as template engine, currently it does not have a reactive view resolver |
| sse | Server Send Event and json stream example |
| websocket | Reactive WebSocket example |
| boot | Switch to Spring Boot to get autoconfiguration of spring-webflux, added extra Spring Data Mongo, Spring Security support |
| boot-jetty | Same as boot, but use Jetty as target runtime |
| boot-tomcat | Same as boot, but use Tomcat as target runtime |
| boot-undertow | Same as boot, but use Undertow as target runtime |
| boot-routes | Use RouterFunction instead of the general Controller in boot |
| boot-freemarker | Same as mvc-freemarker, but based on Spring Boot |
| groovy | Same features as boot, but written in groovy |
| client | Demonstration of WebClient to shake hands with backend reactive APIs |
| kotlin | Same features as boot, but written in kotlin |
| kotlin-gradle | Use kotlin functional approach to declare beans and bootstrap the application programatically |
| session | (WIP)More features will be added here |
-
Reactive Streams, official Reactive Streams website
-
Understanding Reactive types, Spring.IO
-
The WebFlux framework, Spring Framework Reference Documentation
-
Reactor Core 3.0 becomes a unified Reactive Foundation on Java 8, Spring.IO
-
Reactive Spring, Spring.IO
-
Three parts of Notes on Reactive Programming by Dave Syer:
-
Kotlin extensions for MongoOperations and ReactiveMongoOperations
I appreciate all contribution from the community, not limited to reporting bugs, filing an issue, etc.
Specials thanks for Jetbrains's support by contributing an open-source license.
