注入场之间的Spring @Value注入场验证

时间:2017-08-16 05:06:05

标签: java spring

所以我有两个参数被Spring @Value注释注入。 minLengthmaxLength。逻辑上minLength不得高于maxLength,反之亦然。这是我尝试但失败的原因。

抛出maxLength为0的异常,但在application.properties我将其设置为7(在验证前经过测试)

private int minLength;
private int maxLength;

@Min(5)
@Value("${ com.manudcamera.webapi.uuid.minLength : 5} ")
private void setMinLength(int minLength) {
    if ( minLength > this.maxLength ) throw new IllegalArgumentException("minimum length cannot be greater than maximum length | min len: " + minLength + " max len: " + this.maxLength);
    this.minLength = minLength;
}

@Max(50)
@Value("${ com.manudcamera.webapi.uuid.maxLength : 15 }")
private void setMaxLength(int maxLength) {
    if ( maxLength < this.minLength ) throw new IllegalArgumentException("maximum length cannot be greather than minimum length | min len: " + minLength + " max len: " + maxLength);
    this.maxLength = maxLength;
}

2 个答案:

答案 0 :(得分:2)

抱怨0的人是你的自定义验证码,因为在调用setMinavalue时,maxLength值尚未设置(因此为0)。

一种可能的方法是使用PostConstruct注释而不是进行交叉验证的自定义方法。

另一种可能的方法是实现自己的自定义验证器(在类级别应用),进行跨域验证。

答案 1 :(得分:-1)

您可以在bean类中添加以下注释。

@PropertySource(value = {"classpath:application.properties"})

并查看结果。