From 1eb98ba9f7cc0884a3f90144a1fe473611148944 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 20 Mar 2025 15:38:36 +0000 Subject: [PATCH] Create spring-boot-kafka module Issue: 46092 --- settings.gradle | 1 + .../build.gradle | 1 + .../KafkaMetricsAutoConfiguration.java | 9 +- .../KafkaMetricsAutoConfigurationTests.java | 2 +- .../build.gradle | 3 - ...itional-spring-configuration-metadata.json | 171 ------------ ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../spring-boot-dependencies/build.gradle | 1 + .../spring-boot-docs/build.gradle | 2 + .../spring-boot-kafka/build.gradle | 40 +++ ...fkaListenerContainerFactoryConfigurer.java | 8 +- ...DefaultKafkaConsumerFactoryCustomizer.java | 4 +- ...DefaultKafkaProducerFactoryCustomizer.java | 4 +- .../KafkaAnnotationDrivenConfiguration.java | 2 +- .../KafkaAutoConfiguration.java | 10 +- .../KafkaConnectionDetails.java | 10 +- .../kafka/autoconfigure}/KafkaProperties.java | 4 +- ...aStreamsAnnotationDrivenConfiguration.java | 2 +- .../PropertiesKafkaConnectionDetails.java | 4 +- .../SslBundleSslEngineFactory.java | 4 +- .../StreamsBuilderFactoryBeanCustomizer.java | 4 +- .../kafka/autoconfigure}/package-info.java | 2 +- ...itional-spring-configuration-metadata.json | 247 ++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + ...stenerContainerFactoryConfigurerTests.java | 2 +- ...afkaAutoConfigurationIntegrationTests.java | 2 +- .../KafkaAutoConfigurationTests.java | 2 +- .../autoconfigure}/KafkaPropertiesTests.java | 10 +- .../spring-boot-testcontainers/build.gradle | 2 + ...nectionDetailsFactoryIntegrationTests.java | 2 +- ...nectionDetailsFactoryIntegrationTests.java | 2 +- ...nectionDetailsFactoryIntegrationTests.java | 2 +- ...nectionDetailsFactoryIntegrationTests.java | 2 +- ...afkaContainerConnectionDetailsFactory.java | 2 +- ...afkaContainerConnectionDetailsFactory.java | 2 +- ...afkaContainerConnectionDetailsFactory.java | 2 +- ...andaContainerConnectionDetailsFactory.java | 2 +- .../spring-boot-smoke-test-kafka/build.gradle | 2 +- 38 files changed, 342 insertions(+), 231 deletions(-) create mode 100644 spring-boot-project/spring-boot-kafka/build.gradle rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/ConcurrentKafkaListenerContainerFactoryConfigurer.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/DefaultKafkaConsumerFactoryCustomizer.java (93%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/DefaultKafkaProducerFactoryCustomizer.java (93%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/KafkaAnnotationDrivenConfiguration.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/KafkaAutoConfiguration.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/KafkaConnectionDetails.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/KafkaProperties.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/KafkaStreamsAnnotationDrivenConfiguration.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/PropertiesKafkaConnectionDetails.java (96%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/SslBundleSslEngineFactory.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/StreamsBuilderFactoryBeanCustomizer.java (93%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure}/package-info.java (92%) create mode 100644 spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure}/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure}/KafkaAutoConfigurationIntegrationTests.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure}/KafkaAutoConfigurationTests.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka => spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure}/KafkaPropertiesTests.java (95%) diff --git a/settings.gradle b/settings.gradle index 0f57178faee..bb5cb5da034 100644 --- a/settings.gradle +++ b/settings.gradle @@ -76,6 +76,7 @@ include "spring-boot-project:spring-boot-jdbc" include "spring-boot-project:spring-boot-jetty" include "spring-boot-project:spring-boot-jms" include "spring-boot-project:spring-boot-jsonb" +include "spring-boot-project:spring-boot-kafka" include "spring-boot-project:spring-boot-liquibase" include "spring-boot-project:spring-boot-mail" include "spring-boot-project:spring-boot-parent" diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index e9687f99cb5..e8a6e809ed5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -42,6 +42,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-jetty")) optional(project(":spring-boot-project:spring-boot-jsonb")) + optional(project(":spring-boot-project:spring-boot-kafka")) optional(project(":spring-boot-project:spring-boot-liquibase")) optional(project(":spring-boot-project:spring-boot-mail")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java index 62c7e2fe6f9..224aa2e85b3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfiguration.java @@ -23,10 +23,9 @@ import io.micrometer.core.instrument.binder.kafka.KafkaStreamsMetrics; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.kafka.DefaultKafkaConsumerFactoryCustomizer; -import org.springframework.boot.autoconfigure.kafka.DefaultKafkaProducerFactoryCustomizer; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; -import org.springframework.boot.autoconfigure.kafka.StreamsBuilderFactoryBeanCustomizer; +import org.springframework.boot.kafka.autoconfigure.DefaultKafkaConsumerFactoryCustomizer; +import org.springframework.boot.kafka.autoconfigure.DefaultKafkaProducerFactoryCustomizer; +import org.springframework.boot.kafka.autoconfigure.StreamsBuilderFactoryBeanCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.config.StreamsBuilderFactoryBean; @@ -45,7 +44,7 @@ import org.springframework.kafka.streams.KafkaStreamsMicrometerListener; * @author Eddú Meléndez * @since 2.1.0 */ -@AutoConfiguration(before = KafkaAutoConfiguration.class, +@AutoConfiguration(beforeName = "org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration", after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class }) @ConditionalOnClass({ KafkaClientMetrics.class, ProducerFactory.class }) @ConditionalOnBean(MeterRegistry.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfigurationTests.java index e59dee60af3..23b76e3cf75 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/KafkaMetricsAutoConfigurationTests.java @@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/build.gradle b/spring-boot-project/spring-boot-autoconfigure-all/build.gradle index 1b8f1fe0f4c..474218071ca 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure-all/build.gradle @@ -109,7 +109,6 @@ dependencies { optional("org.apache.commons:commons-dbcp2") optional("org.apache.httpcomponents.client5:httpclient5") optional("org.apache.httpcomponents.core5:httpcore5-reactive") - optional("org.apache.kafka:kafka-streams") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-el") optional("org.apache.tomcat.embed:tomcat-embed-websocket") @@ -222,7 +221,6 @@ dependencies { optional("org.springframework.session:spring-session-jdbc") optional("org.springframework.amqp:spring-rabbit") optional("org.springframework.amqp:spring-rabbit-stream") - optional("org.springframework.kafka:spring-kafka") optional("org.springframework.ws:spring-ws-core") { exclude group: "com.sun.mail", module: "jakarta.mail" exclude group: "jakarta.platform", module: "jakarta.jakartaee-api" @@ -263,7 +261,6 @@ dependencies { testImplementation("org.postgresql:postgresql") testImplementation("org.postgresql:r2dbc-postgresql") testImplementation("org.springframework.graphql:spring-graphql-test") - testImplementation("org.springframework.kafka:spring-kafka-test") testImplementation("org.springframework.pulsar:spring-pulsar-cache-provider-caffeine") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 0baa340aedc..6caa139fdcb 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -927,177 +927,6 @@ "reason": "Narayana support has moved to third party starter." } }, - { - "name": "spring.kafka.admin.ssl.keystore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the key store file.", - "deprecation": { - "replacement": "spring.kafka.admin.ssl.key-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.admin.ssl.keystore-password", - "type": "java.lang.String", - "description": "Store password for the key store file.", - "deprecation": { - "replacement": "spring.kafka.admin.ssl.key-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.admin.ssl.truststore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the trust store file.", - "deprecation": { - "replacement": "spring.kafka.admin.ssl.trust-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.admin.ssl.truststore-password", - "type": "java.lang.String", - "description": "Store password for the trust store file.", - "deprecation": { - "replacement": "spring.kafka.admin.ssl.trust-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.consumer.ssl.keystore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the key store file.", - "deprecation": { - "replacement": "spring.kafka.consumer.ssl.key-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.consumer.ssl.keystore-password", - "type": "java.lang.String", - "description": "Store password for the key store file.", - "deprecation": { - "replacement": "spring.kafka.consumer.ssl.key-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.consumer.ssl.truststore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the trust store file.", - "deprecation": { - "replacement": "spring.kafka.consumer.ssl.trust-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.consumer.ssl.truststore-password", - "type": "java.lang.String", - "description": "Store password for the trust store file.", - "deprecation": { - "replacement": "spring.kafka.consumer.ssl.trust-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.listener.only-log-record-metadata", - "type": "java.lang.Boolean", - "defaultValue": true, - "description": "Whether to suppress the entire record from being written to the log when retries are being attempted.", - "deprecation": { - "reason": "Use KafkaUtils#setConsumerRecordFormatter instead.", - "level": "error" - } - }, - { - "name": "spring.kafka.producer.ssl.keystore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the key store file.", - "deprecation": { - "replacement": "spring.kafka.producer.ssl.key-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.producer.ssl.keystore-password", - "type": "java.lang.String", - "description": "Store password for the key store file.", - "deprecation": { - "replacement": "spring.kafka.producer.ssl.key-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.producer.ssl.truststore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the trust store file.", - "deprecation": { - "replacement": "spring.kafka.producer.ssl.trust-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.producer.ssl.truststore-password", - "type": "java.lang.String", - "description": "Store password for the trust store file.", - "deprecation": { - "replacement": "spring.kafka.producer.ssl.trust-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.ssl.keystore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the key store file.", - "deprecation": { - "replacement": "spring.kafka.ssl.key-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.ssl.keystore-password", - "type": "java.lang.String", - "description": "Store password for the key store file.", - "deprecation": { - "replacement": "spring.kafka.ssl.key-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.ssl.truststore-location", - "type": "org.springframework.core.io.Resource", - "description": "Location of the trust store file.", - "deprecation": { - "replacement": "spring.kafka.ssl.trust-store-location", - "level": "error" - } - }, - { - "name": "spring.kafka.ssl.truststore-password", - "type": "java.lang.String", - "description": "Store password for the trust store file.", - "deprecation": { - "replacement": "spring.kafka.ssl.trust-store-password", - "level": "error" - } - }, - { - "name": "spring.kafka.streams.cache-max-bytes-buffering", - "type": "java.lang.Integer", - "deprecation": { - "replacement": "spring.kafka.streams.state-store-cache-max-size", - "level": "error" - } - }, - { - "name": "spring.kafka.streams.cache-max-size-buffering", - "type": "java.lang.Integer", - "deprecation": { - "replacement": "spring.kafka.streams.state-store-cache-max-size", - "level": "error", - "since": "3.1.0" - } - }, { "name": "spring.mustache.prefix", "defaultValue": "classpath:/templates/" diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index e55a789c8b8..fba846878d0 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -58,7 +58,6 @@ org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration -org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 19b3e9ff650..61bca6166fa 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -2005,6 +2005,7 @@ bom { "spring-boot-jetty", "spring-boot-jms", "spring-boot-jsonb", + "spring-boot-kafka", "spring-boot-liquibase", "spring-boot-loader", "spring-boot-loader-classic", diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index 46e5536a22c..e8063d50c6d 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -90,6 +90,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-jetty", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-jms", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-jsonb", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-mail", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata")) @@ -116,6 +117,7 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-jdbc", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-jetty", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-jms", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-mail", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "configurationPropertiesMetadata")) diff --git a/spring-boot-project/spring-boot-kafka/build.gradle b/spring-boot-project/spring-boot-kafka/build.gradle new file mode 100644 index 00000000000..3c55f4edaa2 --- /dev/null +++ b/spring-boot-project/spring-boot-kafka/build.gradle @@ -0,0 +1,40 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +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 Kafka" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + api("org.springframework.kafka:spring-kafka") + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional("org.apache.kafka:kafka-streams") + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation("org.springframework.kafka:spring-kafka-test") + + testRuntimeOnly("ch.qos.logback:logback-classic") +} diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurer.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurer.java index ecdeab9c154..6171a6ea704 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurer.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.time.Duration; import java.util.function.Function; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Listener; import org.springframework.boot.context.properties.PropertyMapper; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Listener; import org.springframework.core.task.SimpleAsyncTaskExecutor; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; import org.springframework.kafka.core.ConsumerFactory; @@ -49,7 +49,7 @@ import org.springframework.kafka.transaction.KafkaAwareTransactionManager; * @author Eddú Meléndez * @author Thomas Kåsene * @author Moritz Halbritter - * @since 1.5.0 + * @since 4.0.0 */ public class ConcurrentKafkaListenerContainerFactoryConfigurer { @@ -130,7 +130,6 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer { /** * Set the {@link ConsumerAwareRebalanceListener} to use. * @param rebalanceListener the rebalance listener. - * @since 2.2 */ void setRebalanceListener(ConsumerAwareRebalanceListener rebalanceListener) { this.rebalanceListener = rebalanceListener; @@ -139,7 +138,6 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer { /** * Set the {@link CommonErrorHandler} to use. * @param commonErrorHandler the error handler. - * @since 2.6.0 */ public void setCommonErrorHandler(CommonErrorHandler commonErrorHandler) { this.commonErrorHandler = commonErrorHandler; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaConsumerFactoryCustomizer.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaConsumerFactoryCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaConsumerFactoryCustomizer.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaConsumerFactoryCustomizer.java index d5d6d55f223..dbc1e7e5483 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaConsumerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaConsumerFactoryCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; @@ -22,7 +22,7 @@ import org.springframework.kafka.core.DefaultKafkaConsumerFactory; * Callback interface for customizing {@code DefaultKafkaConsumerFactory} beans. * * @author Stephane Nicoll - * @since 2.3.0 + * @since 4.0.0 */ @FunctionalInterface public interface DefaultKafkaConsumerFactoryCustomizer { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaProducerFactoryCustomizer.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaProducerFactoryCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaProducerFactoryCustomizer.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaProducerFactoryCustomizer.java index c832eb77714..b9b3684afdc 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/DefaultKafkaProducerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/DefaultKafkaProducerFactoryCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import org.springframework.kafka.core.DefaultKafkaProducerFactory; @@ -22,7 +22,7 @@ import org.springframework.kafka.core.DefaultKafkaProducerFactory; * Callback interface for customizing {@code DefaultKafkaProducerFactory} beans. * * @author Stephane Nicoll - * @since 2.3.0 + * @since 4.0.0 */ @FunctionalInterface public interface DefaultKafkaProducerFactoryCustomizer { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAnnotationDrivenConfiguration.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAnnotationDrivenConfiguration.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAnnotationDrivenConfiguration.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAnnotationDrivenConfiguration.java index f935b475304..af5fb8ed8c0 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAnnotationDrivenConfiguration.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAnnotationDrivenConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.function.Function; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfiguration.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfiguration.java index 005a5a35b1a..52164e68195 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.io.IOException; import java.time.Duration; @@ -36,11 +36,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate; -import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails.Configuration; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Jaas; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Retry.Topic.Backoff; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.PropertyMapper; +import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails.Configuration; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Jaas; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Retry.Topic.Backoff; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.ssl.SslBundles; import org.springframework.context.annotation.Bean; @@ -76,7 +76,7 @@ import org.springframework.util.StringUtils; * @author Phillip Webb * @author Andy Wilkinson * @author Scott Frederick - * @since 1.5.0 + * @since 4.0.0 */ @AutoConfiguration @ConditionalOnClass(KafkaTemplate.class) diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaConnectionDetails.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaConnectionDetails.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaConnectionDetails.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaConnectionDetails.java index e5f58f8a76a..d5283761eae 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaConnectionDetails.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaConnectionDetails.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.List; @@ -27,7 +27,7 @@ import org.springframework.boot.ssl.SslBundle; * @author Moritz Halbritter * @author Andy Wilkinson * @author Phillip Webb - * @since 3.1.0 + * @since 4.0.0 */ public interface KafkaConnectionDetails extends ConnectionDetails { @@ -40,7 +40,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the SSL bundle. * @return the SSL bundle - * @since 3.5.0 */ default SslBundle getSslBundle() { return null; @@ -49,7 +48,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the security protocol. * @return the security protocol - * @since 3.5.0 */ default String getSecurityProtocol() { return null; @@ -58,7 +56,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the consumer configuration. * @return the consumer configuration - * @since 3.5.0 */ default Configuration getConsumer() { return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol()); @@ -67,7 +64,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the producer configuration. * @return the producer configuration - * @since 3.5.0 */ default Configuration getProducer() { return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol()); @@ -76,7 +72,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the admin configuration. * @return the admin configuration - * @since 3.5.0 */ default Configuration getAdmin() { return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol()); @@ -85,7 +80,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails { /** * Returns the Kafka Streams configuration. * @return the Kafka Streams configuration - * @since 3.5.0 */ default Configuration getStreams() { return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol()); diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaProperties.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaProperties.java index c1aae142f5d..e65997ebd27 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.io.IOException; import java.time.Duration; @@ -59,7 +59,7 @@ import org.springframework.util.unit.DataSize; * @author Andy Wilkinson * @author Scott Frederick * @author Yanming Zhou - * @since 1.5.0 + * @since 4.0.0 */ @ConfigurationProperties("spring.kafka") public class KafkaProperties { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaStreamsAnnotationDrivenConfiguration.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaStreamsAnnotationDrivenConfiguration.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaStreamsAnnotationDrivenConfiguration.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaStreamsAnnotationDrivenConfiguration.java index 67ab8d8c6de..6dfdb836685 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaStreamsAnnotationDrivenConfiguration.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/KafkaStreamsAnnotationDrivenConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.Map; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/PropertiesKafkaConnectionDetails.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/PropertiesKafkaConnectionDetails.java similarity index 96% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/PropertiesKafkaConnectionDetails.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/PropertiesKafkaConnectionDetails.java index 643b7930f9d..da25d7bc261 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/PropertiesKafkaConnectionDetails.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/PropertiesKafkaConnectionDetails.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.List; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Ssl; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Ssl; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.ssl.SslBundles; import org.springframework.util.Assert; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/SslBundleSslEngineFactory.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/SslBundleSslEngineFactory.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/SslBundleSslEngineFactory.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/SslBundleSslEngineFactory.java index f3b633f040a..8d227ee3d7f 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/SslBundleSslEngineFactory.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/SslBundleSslEngineFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.io.IOException; import java.security.KeyStore; @@ -34,7 +34,7 @@ import org.springframework.boot.ssl.SslBundle; * * @author Andy Wilkinson * @author Scott Frederick - * @since 3.2.0 + * @since 4.0.0 */ public class SslBundleSslEngineFactory implements SslEngineFactory { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/StreamsBuilderFactoryBeanCustomizer.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/StreamsBuilderFactoryBeanCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/StreamsBuilderFactoryBeanCustomizer.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/StreamsBuilderFactoryBeanCustomizer.java index 7174ab8af4a..f65872934cc 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/StreamsBuilderFactoryBeanCustomizer.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/StreamsBuilderFactoryBeanCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import org.springframework.kafka.config.StreamsBuilderFactoryBean; @@ -22,7 +22,7 @@ import org.springframework.kafka.config.StreamsBuilderFactoryBean; * Callback interface for customizing {@code StreamsBuilderFactoryBean} beans. * * @author Eddú Meléndez - * @since 2.3.2 + * @since 4.0.0 */ @FunctionalInterface public interface StreamsBuilderFactoryBeanCustomizer { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/package-info.java b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/package-info.java similarity index 92% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/package-info.java rename to spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/package-info.java index 3c184d8532e..e3d109b4314 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/kafka/package-info.java +++ b/spring-boot-project/spring-boot-kafka/src/main/java/org/springframework/boot/kafka/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-configuration for Apache Kafka. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; diff --git a/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 00000000000..ae0fba20527 --- /dev/null +++ b/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,247 @@ +{ + "properties": [ + { + "name": "spring.kafka.admin.ssl.keystore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the key store file.", + "deprecation": { + "replacement": "spring.kafka.admin.ssl.key-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.admin.ssl.keystore-password", + "type": "java.lang.String", + "description": "Store password for the key store file.", + "deprecation": { + "replacement": "spring.kafka.admin.ssl.key-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.admin.ssl.truststore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the trust store file.", + "deprecation": { + "replacement": "spring.kafka.admin.ssl.trust-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.admin.ssl.truststore-password", + "type": "java.lang.String", + "description": "Store password for the trust store file.", + "deprecation": { + "replacement": "spring.kafka.admin.ssl.trust-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.consumer.ssl.keystore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the key store file.", + "deprecation": { + "replacement": "spring.kafka.consumer.ssl.key-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.consumer.ssl.keystore-password", + "type": "java.lang.String", + "description": "Store password for the key store file.", + "deprecation": { + "replacement": "spring.kafka.consumer.ssl.key-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.consumer.ssl.truststore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the trust store file.", + "deprecation": { + "replacement": "spring.kafka.consumer.ssl.trust-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.consumer.ssl.truststore-password", + "type": "java.lang.String", + "description": "Store password for the trust store file.", + "deprecation": { + "replacement": "spring.kafka.consumer.ssl.trust-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.listener.only-log-record-metadata", + "type": "java.lang.Boolean", + "defaultValue": true, + "description": "Whether to suppress the entire record from being written to the log when retries are being attempted.", + "deprecation": { + "reason": "Use KafkaUtils#setConsumerRecordFormatter instead.", + "level": "error" + } + }, + { + "name": "spring.kafka.producer.ssl.keystore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the key store file.", + "deprecation": { + "replacement": "spring.kafka.producer.ssl.key-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.producer.ssl.keystore-password", + "type": "java.lang.String", + "description": "Store password for the key store file.", + "deprecation": { + "replacement": "spring.kafka.producer.ssl.key-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.producer.ssl.truststore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the trust store file.", + "deprecation": { + "replacement": "spring.kafka.producer.ssl.trust-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.producer.ssl.truststore-password", + "type": "java.lang.String", + "description": "Store password for the trust store file.", + "deprecation": { + "replacement": "spring.kafka.producer.ssl.trust-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.ssl.keystore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the key store file.", + "deprecation": { + "replacement": "spring.kafka.ssl.key-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.ssl.keystore-password", + "type": "java.lang.String", + "description": "Store password for the key store file.", + "deprecation": { + "replacement": "spring.kafka.ssl.key-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.ssl.truststore-location", + "type": "org.springframework.core.io.Resource", + "description": "Location of the trust store file.", + "deprecation": { + "replacement": "spring.kafka.ssl.trust-store-location", + "level": "error" + } + }, + { + "name": "spring.kafka.ssl.truststore-password", + "type": "java.lang.String", + "description": "Store password for the trust store file.", + "deprecation": { + "replacement": "spring.kafka.ssl.trust-store-password", + "level": "error" + } + }, + { + "name": "spring.kafka.streams.cache-max-bytes-buffering", + "type": "java.lang.Integer", + "deprecation": { + "replacement": "spring.kafka.streams.state-store-cache-max-size", + "level": "error" + } + }, + { + "name": "spring.kafka.streams.cache-max-size-buffering", + "type": "java.lang.Integer", + "deprecation": { + "replacement": "spring.kafka.streams.state-store-cache-max-size", + "level": "error", + "since": "3.1.0" + } + } + ], + "hints": [ + { + "name": "spring.kafka.consumer.auto-offset-reset", + "values": [ + { + "value": "earliest", + "description": "Automatically reset the offset to the earliest offset." + }, + { + "value": "latest", + "description": "Automatically reset the offset to the latest offset." + }, + { + "value": "none", + "description": "Throw exception to the consumer if no previous offset is found for the consumer's group." + }, + { + "value": "exception", + "description": "Throw exception to the consumer." + } + ], + "providers": [ + { + "name": "any" + } + ] + }, + { + "name": "spring.kafka.consumer.key-deserializer", + "providers": [ + { + "name": "handle-as", + "parameters": { + "target": "org.apache.kafka.common.serialization.Deserializer" + } + } + ] + }, + { + "name": "spring.kafka.consumer.value-deserializer", + "providers": [ + { + "name": "handle-as", + "parameters": { + "target": "org.apache.kafka.common.serialization.Deserializer" + } + } + ] + }, + { + "name": "spring.kafka.producer.key-serializer", + "providers": [ + { + "name": "handle-as", + "parameters": { + "target": "org.apache.kafka.common.serialization.Serializer" + } + } + ] + }, + { + "name": "spring.kafka.producer.value-serializer", + "providers": [ + { + "name": "handle-as", + "parameters": { + "target": "org.apache.kafka.common.serialization.Serializer" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..69bdd42c8fb --- /dev/null +++ b/spring-boot-project/spring-boot-kafka/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java rename to spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java index 38c760f17de..33becc8bf22 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java +++ b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/ConcurrentKafkaListenerContainerFactoryConfigurerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.time.Duration; import java.util.function.Function; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationIntegrationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationIntegrationTests.java rename to spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationIntegrationTests.java index 13a8f020142..6c7bc794420 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.ArrayList; import java.util.List; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java rename to spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationTests.java index e1cae37d532..04a4c86aa7c 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.io.File; import java.time.Duration; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaPropertiesTests.java b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaPropertiesTests.java similarity index 95% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaPropertiesTests.java rename to spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaPropertiesTests.java index 661b27049c6..3d79ec287da 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaPropertiesTests.java +++ b/spring-boot-project/spring-boot-kafka/src/test/java/org/springframework/boot/kafka/autoconfigure/KafkaPropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.kafka; +package org.springframework.boot.kafka.autoconfigure; import java.util.Collections; import java.util.Map; @@ -22,11 +22,11 @@ import java.util.Map; import org.apache.kafka.common.config.SslConfigs; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Admin; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Cleanup; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.IsolationLevel; -import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Listener; import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Admin; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Cleanup; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.IsolationLevel; +import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Listener; import org.springframework.core.io.ClassPathResource; import org.springframework.kafka.core.CleanupConfig; import org.springframework.kafka.core.KafkaAdmin; diff --git a/spring-boot-project/spring-boot-testcontainers/build.gradle b/spring-boot-project/spring-boot-testcontainers/build.gradle index 5e4eb780b22..6506889854f 100644 --- a/spring-boot-project/spring-boot-testcontainers/build.gradle +++ b/spring-boot-project/spring-boot-testcontainers/build.gradle @@ -31,6 +31,7 @@ dependencies { dockerTestImplementation(project(":spring-boot-project:spring-boot-flyway")) dockerTestImplementation(project(":spring-boot-project:spring-boot-jdbc")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-kafka")) dockerTestImplementation(project(":spring-boot-project:spring-boot-liquibase")) dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) @@ -77,6 +78,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-elasticsearch")) optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-jdbc")) + optional(project(":spring-boot-project:spring-boot-kafka")) optional(project(":spring-boot-project:spring-boot-liquibase")) optional(project(":spring-boot-project:spring-boot-tx")) optional("org.springframework:spring-test") diff --git a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactoryIntegrationTests.java index e0f9ef6d253..06b0b1eaa43 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactoryIntegrationTests.java @@ -28,7 +28,7 @@ import org.testcontainers.kafka.KafkaContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java index 9ffc1fc699e..1eb0b818491 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java @@ -28,7 +28,7 @@ import org.testcontainers.kafka.ConfluentKafkaContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java index 643dfb4306b..309bc1e484f 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests.java @@ -28,7 +28,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java index 0f61075158b..50f55772b99 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java @@ -28,7 +28,7 @@ import org.testcontainers.redpanda.RedpandaContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; +import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactory.java index adae4c788c6..5861605e7e9 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ApacheKafkaContainerConnectionDetailsFactory.java @@ -20,7 +20,7 @@ import java.util.List; import org.testcontainers.kafka.KafkaContainer; -import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; +import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactory.java index 6b466889000..af541e0192b 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/ConfluentKafkaContainerConnectionDetailsFactory.java @@ -20,7 +20,7 @@ import java.util.List; import org.testcontainers.kafka.ConfluentKafkaContainer; -import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; +import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactory.java index bbcfbf50ee0..226979f902b 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/kafka/DeprecatedConfluentKafkaContainerConnectionDetailsFactory.java @@ -20,7 +20,7 @@ import java.util.List; import org.testcontainers.containers.KafkaContainer; -import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; +import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactory.java index ec4978a8f49..3f9613f6e69 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactory.java @@ -20,7 +20,7 @@ import java.util.List; import org.testcontainers.redpanda.RedpandaContainer; -import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails; +import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/build.gradle index 0b91f0abc08..e9643a2df8d 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/build.gradle @@ -40,7 +40,7 @@ dependencies { dockerTestImplementation("org.testcontainers:kafka") implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json")) - implementation("org.springframework.kafka:spring-kafka") + implementation(project(":spring-boot-project:spring-boot-kafka")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) testImplementation("org.awaitility:awaitility")