From 73b9d60be5155907e5a5ff481f1402ad4009c808 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 22 May 2013 10:18:26 +0200 Subject: [PATCH] DATACMNS-330, DATACMNS-331 - More improvements on web configuration. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverting the registration of the DomainClassConverter as a Spring bean an prefer direct registration against the FormatterRegistry handed into addFormatters(…) of WebMvcConvfigurerAdapter. Otherwise we run into CGLib issues while enhancing the config classes. --- .../config/SpringDataWebConfiguration.java | 37 ++++++++++--------- ...eSpringDataWebSupportIntegrationTests.java | 2 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/springframework/data/web/config/SpringDataWebConfiguration.java b/src/main/java/org/springframework/data/web/config/SpringDataWebConfiguration.java index 5acf501d6..6f6929ec5 100644 --- a/src/main/java/org/springframework/data/web/config/SpringDataWebConfiguration.java +++ b/src/main/java/org/springframework/data/web/config/SpringDataWebConfiguration.java @@ -17,15 +17,14 @@ package org.springframework.data.web.config; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.repository.support.DomainClassConverter; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.data.web.SortHandlerMethodArgumentResolver; +import org.springframework.format.FormatterRegistry; import org.springframework.format.support.FormattingConversionService; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @@ -40,11 +39,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter @Configuration class SpringDataWebConfiguration extends WebMvcConfigurerAdapter { - private static final Logger LOGGER = LoggerFactory.getLogger(SpringDataWebConfiguration.class); - - @Autowired(required = false) - @Qualifier("mvcConversionService") - FormattingConversionService conversionService; + @Autowired + private ApplicationContext context; @Bean public PageableHandlerMethodArgumentResolver pageableResolver() { @@ -56,18 +52,25 @@ class SpringDataWebConfiguration extends WebMvcConfigurerAdapter { return new SortHandlerMethodArgumentResolver(); } - @Bean - public DomainClassConverter mvcDomainClassConverter() { + /* + * (non-Javadoc) + * @see org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter#addFormatters(org.springframework.format.FormatterRegistry) + */ + @Override + public void addFormatters(FormatterRegistry registry) { - if (conversionService == null) { - - LOGGER.warn("No default Spring MVC FormattingConversionService registered! Have you forgotten to " - + "use @EnableWebMvc or register a configuration class extending WebMvcConfigurationSupport?"); - - return null; + if (!(registry instanceof FormattingConversionService)) { + return; } - return new DomainClassConverter(conversionService); + registerDomainClassConverterFor((FormattingConversionService) registry); + } + + private void registerDomainClassConverterFor(FormattingConversionService conversionService) { + + DomainClassConverter converter = new DomainClassConverter( + conversionService); + converter.setApplicationContext(context); } /* diff --git a/src/test/java/org/springframework/data/web/config/EnableSpringDataWebSupportIntegrationTests.java b/src/test/java/org/springframework/data/web/config/EnableSpringDataWebSupportIntegrationTests.java index 025fd875c..365c1370a 100644 --- a/src/test/java/org/springframework/data/web/config/EnableSpringDataWebSupportIntegrationTests.java +++ b/src/test/java/org/springframework/data/web/config/EnableSpringDataWebSupportIntegrationTests.java @@ -64,7 +64,7 @@ public class EnableSpringDataWebSupportIntegrationTests { ApplicationContext context = WebTestUtils.createApplicationContext(SampleConfig.class); List names = Arrays.asList(context.getBeanDefinitionNames()); - assertThat(names, hasItems("pageableResolver", "sortResolver", "mvcDomainClassConverter")); + assertThat(names, hasItems("pageableResolver", "sortResolver")); assertResolversRegistered(context, SortHandlerMethodArgumentResolver.class, PageableHandlerMethodArgumentResolver.class);