Create spring-boot-reactor module

This commit is contained in:
Andy Wilkinson
2025-04-28 14:51:21 +01:00
committed by Phillip Webb
parent 978de86361
commit 343b9a8276
38 changed files with 73 additions and 41 deletions

View File

@@ -100,6 +100,7 @@ include "spring-boot-project:spring-boot-parent"
include "spring-boot-project:spring-boot-pulsar"
include "spring-boot-project:spring-boot-quartz"
include "spring-boot-project:spring-boot-r2dbc"
include "spring-boot-project:spring-boot-reactor"
include "spring-boot-project:spring-boot-reactor-netty"
include "spring-boot-project:spring-boot-rsocket"
include "spring-boot-project:spring-boot-security"

View File

@@ -239,14 +239,6 @@
"reason": "Narayana support has moved to third party starter."
}
},
{
"name": "spring.reactor.stacktrace-mode.enabled",
"description": "Whether Reactor should collect stacktrace information at runtime.",
"defaultValue": false,
"deprecation": {
"replacement": "spring.reactor.debug-agent.enabled"
}
},
{
"name": "spring.resources.add-mappings",
"type": "java.lang.Boolean",

View File

@@ -5,7 +5,6 @@ org.springframework.boot.autoconfigure.http.client.service.HttpServiceClientAuto
org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorAutoConfiguration
org.springframework.boot.autoconfigure.http.client.reactive.service.ReactiveHttpServiceClientAutoConfiguration
org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration
org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration
org.springframework.boot.autoconfigure.web.client.RestClientAutoConfiguration
org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration

View File

@@ -16,7 +16,7 @@ dependencies {
}
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))

View File

@@ -13,8 +13,8 @@ dependencies {
api("org.springframework.data:spring-data-couchbase")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional(project(":spring-boot-project:spring-boot-validation"))
optional("io.projectreactor:reactor-core")
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))

View File

@@ -14,7 +14,7 @@ dependencies {
api("org.springframework.data:spring-data-elasticsearch")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))

View File

@@ -13,7 +13,7 @@ dependencies {
api("org.springframework.data:spring-data-mongodb")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
optional("org.mongodb:mongodb-driver-reactivestreams")
optional("org.mongodb:mongodb-driver-sync")

View File

@@ -15,7 +15,7 @@ dependencies {
api("org.springframework.data:spring-data-neo4j")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))

View File

@@ -2036,6 +2036,7 @@ bom {
"spring-boot-pulsar",
"spring-boot-quartz",
"spring-boot-r2dbc",
"spring-boot-reactor",
"spring-boot-reactor-netty",
"spring-boot-rsocket",
"spring-boot-security",

View File

@@ -39,8 +39,8 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-jdbc"))
optional(project(":spring-boot-project:spring-boot-jpa"))
optional(project(":spring-boot-project:spring-boot-r2dbc"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional(project(":spring-boot-project:spring-boot-security"))
optional("io.projectreactor:reactor-core")
optional("io.r2dbc:r2dbc-spi")
optional("jakarta.servlet:jakarta.servlet-api")
optional("org.apache.derby:derbytools")

View File

@@ -111,6 +111,7 @@ dependencies {
autoConfiguration(project(path: ":spring-boot-project:spring-boot-pulsar", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-quartz", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-r2dbc", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-rsocket", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-security", configuration: "autoConfigurationMetadata"))
@@ -187,6 +188,7 @@ dependencies {
configurationProperties(project(path: ":spring-boot-project:spring-boot-pulsar", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-quartz", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-r2dbc", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-reactor", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-rsocket", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-security", configuration: "configurationPropertiesMetadata"))

View File

@@ -15,6 +15,7 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional("co.elastic.clients:elasticsearch-java") {
exclude group: "commons-logging", module: "commons-logging"
}
@@ -26,7 +27,6 @@ dependencies {
optional("org.springframework.data:spring-data-elasticsearch") {
exclude group: "org.elasticsearch.client", module: "transport"
}
optional("io.projectreactor:reactor-core")
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))

View File

@@ -12,8 +12,8 @@ dependencies {
api(project(":spring-boot-project:spring-boot"))
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional("io.netty:netty-transport")
optional("io.projectreactor:reactor-core")
optional("org.mongodb:mongodb-driver-reactivestreams")
optional("org.mongodb:mongodb-driver-sync")

View File

@@ -0,0 +1,22 @@
plugins {
id "java-library"
id "org.springframework.boot.auto-configuration"
id "org.springframework.boot.configuration-properties"
id "org.springframework.boot.deployed"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Reactor"
dependencies {
api(project(":spring-boot-project:spring-boot"))
api("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation("io.micrometer:context-propagation")
testRuntimeOnly("ch.qos.logback:logback-classic")
}

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.reactor;
package org.springframework.boot.reactor.autoconfigure;
import reactor.core.publisher.Hooks;
@@ -27,7 +27,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
* {@link EnableAutoConfiguration Auto-configuration} for Reactor.
*
* @author Brian Clozel
* @since 3.2.0
* @since 4.0.0
*/
@AutoConfiguration
@ConditionalOnClass(Hooks.class)

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.reactor;
package org.springframework.boot.reactor.autoconfigure;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -22,7 +22,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* Configuration properties for Reactor.
*
* @author Brian Clozel
* @since 3.2.0
* @since 4.0.0
*/
@ConfigurationProperties("spring.reactor")
public class ReactorProperties {

View File

@@ -17,4 +17,4 @@
/**
* Auto-configuration for Reactor.
*/
package org.springframework.boot.autoconfigure.reactor;
package org.springframework.boot.reactor.autoconfigure;

View File

@@ -0,0 +1,13 @@
{
"groups": [],
"properties": [
{
"name": "spring.reactor.stacktrace-mode.enabled",
"description": "Whether Reactor should collect stacktrace information at runtime.",
"defaultValue": false,
"deprecation": {
"replacement": "spring.reactor.debug-agent.enabled"
}
}
]
}

View File

@@ -0,0 +1 @@
org.springframework.boot.reactor.autoconfigure.ReactorAutoConfiguration

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.reactor;
package org.springframework.boot.reactor.autoconfigure;
import java.util.concurrent.atomic.AtomicReference;

View File

@@ -15,7 +15,7 @@ dependencies {
implementation(project(":spring-boot-project:spring-boot-security"))
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation(project(":spring-boot-project:spring-boot-tomcat"))

View File

@@ -16,7 +16,7 @@ dependencies {
implementation(project(":spring-boot-project:spring-boot-security"))
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("io.projectreactor:reactor-core")
optional(project(":spring-boot-project:spring-boot-reactor"))
optional("jakarta.servlet:jakarta.servlet-api")
testImplementation(project(":spring-boot-project:spring-boot-test"))

View File

@@ -23,10 +23,10 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(project(":spring-boot-project:spring-boot-h2console"))
optional(project(":spring-boot-project:spring-boot-reactor"))
optional(project(":spring-boot-project:spring-boot-rsocket"))
optional(project(":spring-boot-project:spring-boot-webmvc"))
optional("jakarta.servlet:jakarta.servlet-api")
optional("io.projectreactor:reactor-core")
optional("org.springframework:spring-messaging")
optional("org.springframework:spring-webflux")
optional("org.springframework.security:spring-security-data")

View File

@@ -17,6 +17,7 @@ dependencies {
optional("jakarta.servlet:jakarta.servlet-api")
optional("org.springframework.security:spring-security-web")
testFixturesImplementation(project(":spring-boot-project:spring-boot-reactor"))
testFixturesImplementation(project(":spring-boot-project:spring-boot-test"))
testFixturesImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testFixturesImplementation(testFixtures(project(":spring-boot-project:spring-boot")))

View File

@@ -5,8 +5,8 @@ plugins {
description = "Starter for using Cassandra distributed database and Spring Data Cassandra Reactive"
dependencies {
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-data-cassandra"))
api(project(":spring-boot-project:spring-boot-reactor"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-tx"))
api("io.projectreactor:reactor-core")
}

View File

@@ -5,8 +5,8 @@ plugins {
description = "Starter for using Couchbase document-oriented database and Spring Data Couchbase Reactive"
dependencies {
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-data-couchbase"))
api(project(":spring-boot-project:spring-boot-reactor"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-tx"))
api("io.projectreactor:reactor-core")
}

View File

@@ -6,8 +6,8 @@ description = "Starter for using MongoDB document-oriented database and Spring D
dependencies {
api(project(":spring-boot-project:spring-boot-data-mongodb"))
api(project(":spring-boot-project:spring-boot-reactor"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-tx"))
api("io.projectreactor:reactor-core")
api("org.mongodb:mongodb-driver-reactivestreams")
}

View File

@@ -5,8 +5,8 @@ plugins {
description = "Starter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client"
dependencies {
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-data-redis"))
api(project(":spring-boot-project:spring-boot-reactor"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-tx"))
api("io.projectreactor:reactor-core")
}

View File

@@ -125,6 +125,7 @@ dependencies {
testImplementation(project(":spring-boot-project:spring-boot-freemarker"))
testImplementation(project(":spring-boot-project:spring-boot-gson"))
testImplementation(project(":spring-boot-project:spring-boot-mustache"))
testImplementation(project(":spring-boot-project:spring-boot-reactor"))
testImplementation(project(":spring-boot-project:spring-boot-testcontainers"))
testImplementation(project(":spring-boot-project:spring-boot-thymeleaf"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
@@ -135,7 +136,6 @@ dependencies {
testImplementation("io.lettuce:lettuce-core")
testImplementation("io.micrometer:micrometer-registry-prometheus")
testImplementation("io.projectreactor.netty:reactor-netty-http")
testImplementation("io.projectreactor:reactor-core")
testImplementation("io.projectreactor:reactor-test")
testImplementation("io.r2dbc:r2dbc-h2")
testImplementation("jakarta.json:jakarta.json-api")

View File

@@ -24,5 +24,5 @@ dependencies {
testImplementation("org.springframework:spring-jdbc")
testRuntimeOnly("ch.qos.logback:logback-classic")
testRuntimeOnly("io.projectreactor:reactor-core")
testRuntimeOnly(project(":spring-boot-project:spring-boot-reactor"))
}

View File

@@ -6,11 +6,11 @@ plugins {
description = "Spring Boot Data Couchbase smoke test"
dependencies {
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-reactor"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-testcontainers"))
dockerTestImplementation("io.projectreactor:reactor-core")
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
dockerTestImplementation("io.projectreactor:reactor-test")
dockerTestImplementation("org.apache.httpcomponents.client5:httpclient5")
dockerTestImplementation("org.junit.jupiter:junit-jupiter")

View File

@@ -18,7 +18,7 @@ dependencies {
dockerTestImplementation("org.testcontainers:mongodb")
dockerTestImplementation("org.testcontainers:testcontainers")
implementation(project(":spring-boot-project:spring-boot-reactor"))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-mongodb"))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-mongodb-reactive"))
implementation("io.projectreactor:reactor-core")
}

View File

@@ -6,12 +6,12 @@ plugins {
description = "Spring Boot Data Redis smoke test"
dependencies {
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-reactor"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-testcontainers"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
dockerTestImplementation("com.redis:testcontainers-redis")
dockerTestImplementation("io.projectreactor:reactor-core")
dockerTestImplementation("io.projectreactor:reactor-test")
dockerTestImplementation("org.junit.jupiter:junit-jupiter")
dockerTestImplementation("org.junit.platform:junit-platform-engine")