From c1e58d187adb91f7c3de8e1ab524d3073c95829d Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 18 Jun 2019 16:21:49 +0200 Subject: [PATCH] Polishing KafkaStreamsBinderUtils Added registerBean(..) instead of registerSingleton Resolves #675 --- .../streams/KafkaStreamsBinderUtils.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderUtils.java b/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderUtils.java index d04e99f95..59ad90035 100644 --- a/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderUtils.java +++ b/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderUtils.java @@ -27,6 +27,7 @@ import org.springframework.cloud.stream.binder.kafka.provisioning.KafkaTopicProv import org.springframework.cloud.stream.binder.kafka.streams.properties.KafkaStreamsBinderConfigurationProperties; import org.springframework.cloud.stream.binder.kafka.streams.properties.KafkaStreamsConsumerProperties; import org.springframework.context.ApplicationContext; +import org.springframework.context.support.GenericApplicationContext; import org.springframework.core.MethodParameter; import org.springframework.util.StringUtils; @@ -95,17 +96,15 @@ final class KafkaStreamsBinderUtils { static BeanFactoryPostProcessor outerContextBeanFactoryPostProcessor() { return (beanFactory) -> { // It is safe to call getBean("outerContext") here, because this bean is - // registered as first - // and as independent from the parent context. - ApplicationContext outerContext = (ApplicationContext) beanFactory + // registered first and is independent from the parent context. + GenericApplicationContext outerContext = (GenericApplicationContext) beanFactory .getBean("outerContext"); - beanFactory.registerSingleton( - KafkaStreamsBinderConfigurationProperties.class.getSimpleName(), - outerContext - .getBean(KafkaStreamsBinderConfigurationProperties.class)); - beanFactory.registerSingleton( - KafkaStreamsBindingInformationCatalogue.class.getSimpleName(), - outerContext.getBean(KafkaStreamsBindingInformationCatalogue.class)); + + outerContext.registerBean(KafkaStreamsBinderConfigurationProperties.class, + () -> outerContext.getBean(KafkaStreamsBinderConfigurationProperties.class)); + outerContext.registerBean(KafkaStreamsBindingInformationCatalogue.class, + () -> outerContext.getBean(KafkaStreamsBindingInformationCatalogue.class)); + }; }