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.

Press + to interact
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.

Press + to interact
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 ... ...