我有一个 Spring 4 应用程序,其类路径上带有 hibernate-validator。我有一个 bean 类,它对 bean 属性使用一些 javax 验证注释,并且我有另一个类在其构造函数中接受该 bean。
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" />
请注意, validator 是在应用程序上下文中定义的。当我按原样运行应用程序时,我希望在将 bean 设置到测试类构造函数中时抛出异常,因为这两个参数不满足约束,但它运行时没有任何异常。我还漏掉了什么吗?
最佳答案
@Valid
注释旨在用于 Controller 方法,因此不会在构造函数中对其进行评估。
这个old question指示如何测试 @Valid
通过使用 Spring MVC 公开和调用 Controller 来进行注释。另外,如果您发现其他注释不起作用,请确保您有 <mvc:annotation-driven />
上下文文件中的某个位置。
关于java - Spring 的 bean 验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260799/