@Size注释似乎不适用于我的班级

时间:2019-07-02 07:28:05

标签: java spring-boot configuration annotations

我有一个Spring Boot Controller,其端点接受以下Configuration类(如json)。该类具有参数maxIterations,并将@Size注释设置为9000

...
import javax.validation.constraints.Max;
import javax.validation.constraints.Size;

public class Configuration {
    // Max iterations
    @Size(max = 9000)
    private Integer maxIterations;

    ...
}

问题在于,使用以下POST对该端点进行json调用时,它不会返回错误或警告,指出maxIterations参数高于{{1 }}。

9000

这是我的控制者:

{
  "maxIterations": 15000
}

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

如评论中所述,您应该使用@Max(9000),因为@Size仅应用于数组,字符串,集合和映射。

public class Configuration {
    @Max(9000)
    private Integer maxIterations;

    // ...
}

另外,您应该在控制器内使用@Valid批注,以便Bean验证程序知道Configuration类中存在约束,例如:

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@Valid @RequestBody Configuration configuration) {
    // ...
}