Puede usar BeanPostProcessor
para personalizar cada bean definido por <mvc:annotation-driven />
. Los javadocs ahora detallan todos los beans que registra la etiqueta.
Si realmente quiere deshacerse de ella, se puede ver en el código fuente de org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser
Y se puede ver lo que los granos se está definiendo. He hecho esto 'ejercicio' (no para todos ellos, pero para aquellos que necesito), así que aquí están ellos:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="com.yourpackage.web.util.CommonWebBindingInitializer" />
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
<bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
<!-- bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /-->
</list>
</property>
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
Ahora, sobre el que se ve CommonWebBindingInitializer
. Tienes que crear esta clase, para usar la conversión y la validación:
public class CommonWebBindingInitializer implements WebBindingInitializer {
@Autowired
private Validator validator;
@Autowired
private ConversionService conversionService;
@Override
public void initBinder(WebDataBinder binder, WebRequest request) {
binder.setValidator(validator);
binder.setConversionService(conversionService);
}
}
Y esto funciona bien para mí hasta ahora. No dude en informar cualquier problema con él.
Gracias Bozho, esa es solo la información que necesito. Estoy bastante seguro de que me encontraré con más problemas de configuración, en particular, implementando . No dudaré en denunciarlos ;-) –
Ah, está el enlace Fisheye que estaba buscando. :] – earldouglas
BTW La fuente 'AnnotationDrivenBeanDefinitionParser' se puede ver también en GitHub: https://github.com/cbeams/spring-framework/blob/master/org.springframework.web.servlet/src/main/java/org/springframework /web/servlet/config/AnnotationDrivenBeanDefinitionParser.java –