我使用的是Spring 3.1,並具有以下彈簧配置,我使用我自己的ValidationMessageSource
明確創建了LocalValidatorFactoryBean
。我的課堂路徑中有Hibernate Validator 4.1。如何阻止DefaultListableBeanFactory隱式創建LocalValidatorFactoryBean實例
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>ValidatorMsgID</value>
</list>
</property>
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"/>
</bean>
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
但是我注意到,LocalValidatorFactoryBean
正在被擊中的類調試afterPropertiesSet
方法創建的兩倍。第一次是我在spring配置中定義的explicite bean,但是之後,同一個類再次被DefaultListableBeanFactory
類再次實例化 - 顯然這次沒有validationMessageSource
。因此,當Spring使用LocalValidatorFactoryBean
時,它使用默認的Hibernates messagesource
而不是我指定的那個。
好吧,進一步調查這看起來這是由mvc:annotation-driven
我在春季配置引起的。 任何指針仍然會幫助