Reactive Neo4j
Learn about nonblocking access to Neo4j using reactive programming with Spring Data Neo4j.
Reactive programming in Spring Data Neo4j enables asynchronous, nonblocking interactions with the Neo4j graph database. It utilizes reactive streams and the Reactor project to handle data in a more scalable and efficient manner, allowing better support for concurrent and reactive applications.
Quick setup
First, we should add the spring-boot-starter-webflux
Spring Boot starter data dependency to the build.gradle
file to enable reactive programming support with Spring Data Neo4j.
plugins {id 'java'id 'org.springframework.boot' version '3.0.2'id 'io.spring.dependency-management' version '1.1.0'}group = 'com.smartdiscover'version = '0.0.1-SNAPSHOT'sourceCompatibility = '17'repositories {mavenCentral()}dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-neo4j'implementation 'org.springframework.boot:spring-boot-starter-webflux'implementation 'org.projectlombok:lombok:1.18.26'annotationProcessor 'org.projectlombok:lombok'}
The ReactiveNeo4jRepository
interface
The ReactiveNeo4jRepository
interface comes with the Spring Data Neo4j framework for reactive programming, extending interfaces like ReactiveSortingRepository
, ReactiveQueryByExampleExecutor
, and ReactiveCrudRepository
.
public interface ReactiveNeo4jRepository<T, ID>extends ReactiveSortingRepository<T, ID>, ReactiveQueryByExampleExecutor<T>, ReactiveCrudRepository<T, ID> {}
The ReactiveAuthorRepository
interface
Now, let’s create the ReactiveAuthorRepository
interface in the com.smartdiscover.repository
package, extending the ... ...