0
我在類路徑中使用了hibernate-validator的Spring 4應用程序。我有一個bean類,它爲bean屬性使用了一些javax驗證註釋,而我有另一個接受該bean的構造函數的類。Spring驗證不起作用
的Java:
public class Config {
@NotNull
@Size(min=10)
public final String test;
@Min(5)
public final int num;
public Config(String test, int num) {
this.test = test;
this.num = num;
}
//getters
}
public class Test {
private Config config;
public Test(@Valid Config config) {
this.config = config;
}
}
我的Spring應用程序上下文如下:
<bean id="config" class="com.Config">
<constructor-arg type="java.lang.String">
<value>aaaa</value>
</constructor-arg>
<constructor-arg type="int">
<value>2</value>
</constructor-arg>
</bean>
<bean id="test" class="com.Test">
<constructor-arg ref="config" />
</bean>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
注意驗證在應用程序中定義。當我按原樣運行應用程序時,我期望在將bean設置到測試類構造函數中時引發異常,因爲這兩個參數不符合約束,但運行時沒有任何異常。我錯過了別的嗎?
那麼有沒有辦法自動驗證?我是否需要使用驗證器來調用驗證方法?這不是一個web應用程序。 – user1491636
你可以在你的類中實現'InitializingBean',Validator中的Autowire('@Autowired Validator validator'),然後在'validator.validate(this)'上調用驗證器,並聲明它返回一個空集。 –