Możesz użyć BeanPostProcessor
, aby dostosować każdy komponent bean zdefiniowany przez <mvc:annotation-driven />
. Teraz javadocs wyszczególnia wszystkie ziarna, które rejestruje znacznik.
Jeśli naprawdę chcą się go pozbyć, można spojrzeć na kodzie źródłowym org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser
I można zobaczyć, które fasola jest to definiowania. Robiłem to „ćwiczenia” (nie dla wszystkich, ale dla tych, muszę), więc oto one:
<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">
Teraz powyżej widać CommonWebBindingInitializer
. Musisz utworzyć tę klasę, aby używać konwersji i sprawdzania poprawności:
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);
}
}
I to działa dobrze dla mnie do tej pory. Zachęcamy do zgłaszania wszelkich problemów.
Dzięki Bozho, to jest tylko wejście, którego potrzebuję. Jestem pewien, że napotkam kolejne problemy z konfiguracją, w szczególności implementując . Nie zawaham się ich zgłaszać ;-) –
Ach, jest tam link Fisheye, którego szukałem. :] – earldouglas
Źródło BTW 'AnnotationDrivenBeanDefinitionParser' można również oglądać na GitHub: https://github.com/cbeams/spring-framework/blob/master/org.springframework.web.servlet/src/main/java/org/springframework /web/servlet/config/AnnotationDrivenBeanDefinitionParser.java –