Fully Reactive: Spring, Kotlin, and JavaFX Playing Together
Spring Framework 5 brings full reactive support to developers everywhere. What better way to demo reactive programming than to actually build something live? Trisha will live code an end-to-end application using Spring Framework 5, Spring Boot, Reactor, Kotlin, JavaFX, and maybe even some MongoDB, all built using IntelliJ IDEA. During this session, we’ll see how these different components can work together really easily using Spring. What could possibly go wrong?
I also gave this presentation for the vJUG (video), which is a little shorter and it does miss out the RSocket functionality.
Tutorial
I’ve split the demo into much smaller pieces in order to make it easier to follow along with. Each step consists of a video of 5-10 mins and a blog post which explains the process and contains the code from the video.
Code
The code may be slightly different from the demo, as the demo needs to simplify the process of creation and I get to take my time when I’m creating the real app! This is the code for the application as I created it, before I demoed it:
This is the exact code created for the IntelliJ IDEA tutorial, which may differ slightly:
Resources
I Googled a LOT for this demo, and that was even after Josh and I had already presented it at Code One in 2018!
Spring & Spring Boot
- Spring boot multi-module maven project example
- Spring Documentation: Annotation-based Container Configuration
- Spring Profiles
- Create a Custom Auto-Configuration with Spring Boot
- Spring Boot 2.2.0.M6 (the release I used to put together the demo)
- Logging in Spring Boot
- Spring Boot 2 With JUnit 5 and Mockito 2 for Unit, Integration Testing
REST & Reactive Web
- Build Reactive APIs with Spring WebFlux
- Flux Sharing in Project Reactor: From One to Many
- Reactive Programming with Reactor 3
- Reactive Spring: Define a REST Endpoint as a Continuous Stream
- Using WebSocket to build an interactive web application
- Reactive WebSockets with Spring 5
RSocket
- Give REST a Rest with RSocket
- Spring Tips: RSocket Messaging in Spring Boot 2.2 (video)
- Reactive streams over the network with RSocket
- Using RSocket with Spring Boot
- Spring Boot Documentation: RSocket
- SO: Rsocket Server exception: No handler for destination '' (destination does not pass from client to server)
- R(eactive)Socket: Bootified
- RSocket Using Spring Boot
Reactive Testing
- Get Started with RSocket - Part 2: Spring Integration - testing RSockets
- Testing Reactive Streams Using StepVerifier and TestPublisher
- Unable to Find @SpringBootConfiguration - really struggled with this problem when I was trying to test the RSocket client
JavaFX
- Introducing FxWeaver - Dependency Injection Support for JavaFX and FXML - a Spring Boot starter (created after this demo was presented!) which should make it easier to integrate JavaFX and Spring Boot.
- Creating a Spring Boot JavaFX Application with FxWeaver
- Using FXWeaver in this demo - I created a branch where I use FXWeaver (above) and it makes the StageInitializer much simpler.
- Let Spring Be Your JavaFX Controller Factory
- Spring Tips: JavaFX (video) - Josh Long covers some of our original version of this presentation in his Spring Tips. There’s much more detail here about how to integrate JavaFX into Spring
- Getting Started with JavaFX 13
- JavaFX Line Chart example