Skip to content

Commit 79ec0ea

Browse files
committed
Merge branch '3.4.x'
Closes gh-44440
2 parents e7d9f19 + 8705ed0 commit 79ec0ea

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java

+14
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
import org.apache.kafka.clients.producer.ProducerConfig;
2626
import org.apache.kafka.common.config.SslConfigs;
2727

28+
import org.springframework.aot.hint.MemberCategory;
29+
import org.springframework.aot.hint.RuntimeHints;
30+
import org.springframework.aot.hint.RuntimeHintsRegistrar;
2831
import org.springframework.beans.factory.ObjectProvider;
2932
import org.springframework.boot.autoconfigure.AutoConfiguration;
3033
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -42,6 +45,7 @@
4245
import org.springframework.boot.ssl.SslBundles;
4346
import org.springframework.context.annotation.Bean;
4447
import org.springframework.context.annotation.Import;
48+
import org.springframework.context.annotation.ImportRuntimeHints;
4549
import org.springframework.kafka.core.ConsumerFactory;
4650
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
4751
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
@@ -78,6 +82,7 @@
7882
@ConditionalOnClass(KafkaTemplate.class)
7983
@EnableConfigurationProperties(KafkaProperties.class)
8084
@Import({ KafkaAnnotationDrivenConfiguration.class, KafkaStreamsAnnotationDrivenConfiguration.class })
85+
@ImportRuntimeHints(KafkaAutoConfiguration.KafkaRuntimeHints.class)
8186
public class KafkaAutoConfiguration {
8287

8388
private final KafkaProperties properties;
@@ -249,4 +254,13 @@ static void applySecurityProtocol(Map<String, Object> properties, String securit
249254
}
250255
}
251256

257+
static class KafkaRuntimeHints implements RuntimeHintsRegistrar {
258+
259+
@Override
260+
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
261+
hints.reflection().registerType(SslBundleSslEngineFactory.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
262+
}
263+
264+
}
265+
252266
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java

+12
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
import org.junit.jupiter.params.ParameterizedTest;
4646
import org.junit.jupiter.params.provider.ValueSource;
4747

48+
import org.springframework.aot.hint.MemberCategory;
49+
import org.springframework.aot.hint.RuntimeHints;
50+
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
4851
import org.springframework.boot.autoconfigure.AutoConfigurations;
4952
import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration;
5053
import org.springframework.boot.ssl.SslBundle;
@@ -992,6 +995,15 @@ void specificSecurityProtocolOverridesCommonSecurityProtocol() {
992995
});
993996
}
994997

998+
@Test
999+
void shouldRegisterRuntimeHints() {
1000+
RuntimeHints runtimeHints = new RuntimeHints();
1001+
new KafkaAutoConfiguration.KafkaRuntimeHints().registerHints(runtimeHints, getClass().getClassLoader());
1002+
assertThat(RuntimeHintsPredicates.reflection()
1003+
.onType(SslBundleSslEngineFactory.class)
1004+
.withMemberCategories(MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS)).accepts(runtimeHints);
1005+
}
1006+
9951007
private KafkaConnectionDetails kafkaConnectionDetails() {
9961008
return new KafkaConnectionDetails() {
9971009

0 commit comments

Comments
 (0)