GH-2189 Ensure SpelExpressionConverterConfiguration class is added

This ensures that SpelExpressionConverterConfiguration is added for cases where multiple binders are used

Resolves #2189
This commit is contained in:
Oleg Zhurakousky
2021-06-28 14:30:02 +02:00
parent 76c0a2488b
commit 86535d10b9

View File

@@ -39,6 +39,7 @@ import org.springframework.boot.WebApplicationType;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.function.context.FunctionCatalog;
import org.springframework.cloud.stream.config.ListenerContainerCustomizer;
import org.springframework.cloud.stream.config.SpelExpressionConverterConfiguration;
import org.springframework.cloud.stream.config.SpelExpressionConverterConfiguration.SpelConverter;
import org.springframework.cloud.stream.reflection.GenericsUtils;
import org.springframework.context.ApplicationContext;
@@ -399,6 +400,7 @@ public class DefaultBinderFactory implements BinderFactory, DisposableBean, Appl
List<Class> sourceClasses = new ArrayList<>();
sourceClasses.addAll(Arrays.asList(binderType.getConfigurationClasses()));
sourceClasses.addAll(Collections.singletonList(SpelExpressionConverterConfiguration.class));
if (binderProperties.containsKey("spring.main.sources")) {
String sources = (String) binderProperties.get("spring.main.sources");
if (StringUtils.hasText(sources)) {
@@ -445,11 +447,6 @@ public class DefaultBinderFactory implements BinderFactory, DisposableBean, Appl
((GenericApplicationContext) binderProducingContext).registerBean(customizerEntry.getKey(),
ListenerContainerCustomizer.class, () -> customizerWrapper);
}
GenericConversionService cs = (GenericConversionService) ((GenericApplicationContext) binderProducingContext).getBeanFactory().getConversionService();
if (cs != null) {
SpelConverter spelConverter = new SpelConverter();
cs.addConverter(spelConverter);
}
}
binderProducingContext.addApplicationListener(new ApplicationListener<ApplicationEvent>() {
@Override