È possibile utilizzare BeanPostProcessor
per personalizzare ciascun bean definito da <mvc:annotation-driven />
. I javadoc ora descrivono tutti i bean dei registri dei tag.
Se davvero si vuole sbarazzarsi di esso, si può guardare il codice sorgente di org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser
E si può vedere che i fagioli si sta definendo. Ho fatto questo 'esercizio' (non per tutti, ma per quelli che ho bisogno), ecco che sono:
<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">
Ora, sopra si vede il CommonWebBindingInitializer
. Devi creare questa classe, per utilizzare la conversione e la convalida:
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);
}
}
E questo funziona bene per me finora. Sentiti libero di segnalare eventuali problemi con esso.
Grazie Bozho, questo è solo l'input di cui ho bisogno. Sono abbastanza sicuro che mi imbatterò in ulteriori problemi di configurazione, in particolare, implementando . Non esiterò a segnalarli ;-) –
Ah, c'è il collegamento Fisheye che stavo cercando. :] – earldouglas
L'origine BTW 'AnnotationDrivenBeanDefinitionParser' può essere visualizzata anche su GitHub: https://github.com/cbeams/spring-framework/blob/master/org.springframework.web.servlet/src/main/java/org/springframework /web/servlet/config/AnnotationDrivenBeanDefinitionParser.java –