From 99e166516dd70f1e4ada4bcf4cd5d7ba32532ecf Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 24 Oct 2018 15:19:25 -0700 Subject: [PATCH] Restore conversion service binary compatibility Change `ApplicationConversionService.getSharedInstance()` to again return a `ConversionService` rather than `ApplicationConversionService`. This restore binary compatibly with Spring Boot 2.0 Closes gh-14938 --- .../java/org/springframework/boot/SpringApplication.java | 6 +++++- .../boot/convert/ApplicationConversionService.java | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index d930e4e0664..979e9f68236 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -59,6 +59,8 @@ import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.core.GenericTypeResolver; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.support.ConfigurableConversionService; import org.springframework.core.env.CommandLinePropertySource; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.ConfigurableEnvironment; @@ -480,8 +482,10 @@ public class SpringApplication { protected void configureEnvironment(ConfigurableEnvironment environment, String[] args) { if (this.addConversionService) { + ConversionService conversionService = ApplicationConversionService + .getSharedInstance(); environment.setConversionService( - ApplicationConversionService.getSharedInstance()); + (ConfigurableConversionService) conversionService); } configurePropertySources(environment, args); configureProfiles(environment, args); diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/ApplicationConversionService.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/ApplicationConversionService.java index e1d9ec482cd..919b2725471 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/ApplicationConversionService.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/ApplicationConversionService.java @@ -53,12 +53,16 @@ public class ApplicationConversionService extends FormattingConversionService { } /** - * Return a shared default {@code ApplicationConversionService} instance, lazily + * Return a shared default application {@code ConversionService} instance, lazily * building it once needed. + *

+ * Note: This method actually returns an {@link ApplicationConversionService} + * instance. However, the {@code ConversionService} signature has been preserved for + * binary compatibility. * @return the shared {@code ApplicationConversionService} instance (never * {@code null}) */ - public static ApplicationConversionService getSharedInstance() { + public static ConversionService getSharedInstance() { ApplicationConversionService sharedInstance = ApplicationConversionService.sharedInstance; if (sharedInstance == null) { synchronized (ApplicationConversionService.class) {