Spring验证bean无效

时间:2016-05-16 18:30:24

标签: java spring bean-validation

我在类路径上有一个带有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设置为测试类构造函数时抛出异常,因为这两个参数不符合约束,但它运行时没有任何异常。我错过了别的什么吗?

1 个答案:

答案 0 :(得分:1)

@Valid注释旨在用于Controller方法,因此不会在构造函数中对此进行评估。

这个old question表示如何通过使用Spring MVC公开和调用Controller来测试@Valid注释。此外,如果您发现其他注释无效,请确保在上下文文件中的某处有<mvc:annotation-driven />