我无法仅使用批注来运行构造函数参数验证。我的代码:
@Data
@Validated
public class TestConstructorLevel
{
private int a;
private int b;
private Integer nullValue;
public TestConstructorLevel( int a, int b, @NotNull Integer nullValue )
{
this.a = a;
this.b = b;
this.nullValue = nullValue;
}
}
我希望我能做些事
new TestConstructorLevel(1, 2, null)
由于@ NotNull,我得到了[[ConstraintViolationException,但这不起作用。
[唯一的变体,当我手动触发验证时就可以使用,如这里:validator.forExecutables().validateConstructorParameters(
ReflectionUtils.accessibleConstructor( TestConstructorLevel.class, int.class, int.class, Integer.class ),
new Object[] { 2,1, null } );
但是这不合适。PS。这是SpringBoot应用程序,我试图将TestConstructorLevel类创建为Spring bean,并且没有任何更改。
所以我的问题是:我需要使用什么注释来触发对构造方法的验证。
注解就是:注解。它仅提供有关构造函数参数的一些元数据。
验证者可以使用此元数据来执行其验证工作。但是构造函数只保留一个:构造函数。