diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java index 09c97aff6ae3e1a13589ffa02182fd0fab87246f..de31ebee247960620e5cf92be1536a5c74979d10 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java @@ -73,10 +73,16 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle * @param beanFactory a bean factory for resolving {@code ${...}} * placeholders and {@code #{...}} SpEL expressions in default values */ - protected AbstractNamedValueMethodArgumentResolver(@Nullable ConversionService conversionService, + protected AbstractNamedValueMethodArgumentResolver(ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory) { - this.conversionService = conversionService != null ? conversionService : DefaultConversionService.getSharedInstance(); + // Fallback on shared ConversionService for now for historic reasons. + // Possibly remove after discussion in gh-23882. + + //noinspection ConstantConditions + this.conversionService = conversionService != null ? + conversionService : DefaultConversionService.getSharedInstance(); + this.configurableBeanFactory = beanFactory; this.expressionContext = (beanFactory != null ? new BeanExpressionContext(beanFactory, null) : null); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java index e0e4e16e0b7e146557c96e70a79c812c182cdbc8..ad80d5922dc12add1baec5a52a9502940c040eee 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DestinationVariableMethodArgumentResolver.java @@ -41,7 +41,7 @@ public class DestinationVariableMethodArgumentResolver extends AbstractNamedValu DestinationVariableMethodArgumentResolver.class.getSimpleName() + ".templateVariables"; - public DestinationVariableMethodArgumentResolver(@Nullable ConversionService conversionService) { + public DestinationVariableMethodArgumentResolver(ConversionService conversionService) { super(conversionService, null); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java index a3a21d53016cf62b76c2d4547b5671532e356866..e6b50f058631ccb66a3abf281604ac93f6f80822 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java @@ -49,7 +49,7 @@ public class HeaderMethodArgumentResolver extends AbstractNamedValueMethodArgume public HeaderMethodArgumentResolver( - @Nullable ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory) { + ConversionService conversionService, @Nullable ConfigurableBeanFactory beanFactory) { super(conversionService, beanFactory); } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolverTests.java b/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolverTests.java index fcc4772a070d8a60f6c716667bb29083505eebef..503ef454ed8248cea64d0459cf86a9f29aa747ac 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolverTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolverTests.java @@ -145,14 +145,6 @@ public class HeaderMethodArgumentResolverTests { assertThat(result).isEqualTo(Optional.of("bar")); } - @Test - public void resolveOptionalHeaderWithValueFromNullConversionServiceInput() throws Exception { - GenericApplicationContext context = new GenericApplicationContext(); - context.refresh(); - resolver = new HeaderMethodArgumentResolver(null, context.getBeanFactory()); - resolveOptionalHeaderWithValue(); - } - @Test public void resolveOptionalHeaderAsEmpty() throws Exception { Message message = MessageBuilder.withPayload("foo").build();