我在类路径上有一个带有hibernate-validator的Spring 4应用程序。我有一个bean类,它为bean属性使用了一些javax验证注释,我有另一个类在它的构造函数中接受该bean。
爪哇:
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;
}
}
My 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设置为测试类构造函数时抛出异常,因为这两个参数不符合约束,但它运行时没有任何异常。我错过了别的什么吗?
答案 0 :(得分:1)
@Valid
注释旨在用于Controller方法,因此不会在构造函数中对此进行评估。
这个old question表示如何通过使用Spring MVC公开和调用Controller来测试@Valid
注释。此外,如果您发现其他注释无效,请确保在上下文文件中的某处有<mvc:annotation-driven />
。