Guard default conversion service creation

Update ConfigurationPropertiesBindingPostProcessor to ensure that
the defaultConversionService is only created once.

Fixes gh-1822
This commit is contained in:
Phillip Webb
2014-11-04 08:56:59 -08:00
parent edaed415fb
commit adffb7a30f

View File

@@ -86,12 +86,10 @@ public class ConfigurationPropertiesBindingPostProcessor implements BeanPostProc
private ConversionService conversionService;
private final DefaultConversionService defaultConversionService = new DefaultConversionService();
private DefaultConversionService defaultConversionService;
private BeanFactory beanFactory;
private final boolean initialized = false;
private ResourceLoader resourceLoader = new DefaultResourceLoader();
private Environment environment = new StandardEnvironment();
@@ -341,11 +339,13 @@ public class ConfigurationPropertiesBindingPostProcessor implements BeanPostProc
}
private ConversionService getDefaultConversionService() {
if (!this.initialized) {
if (this.defaultConversionService == null) {
DefaultConversionService conversionService = new DefaultConversionService();
for (Converter<?, ?> converter : ((ListableBeanFactory) this.beanFactory)
.getBeansOfType(Converter.class, false, false).values()) {
this.defaultConversionService.addConverter(converter);
conversionService.addConverter(converter);
}
this.defaultConversionService = conversionService;
}
return this.defaultConversionService;
}