Vah*_*yan 5 java configuration annotations spring-boot
我有一个 Spring Boot 控制器,其端点接受以下配置类(作为 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;
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,当使用POST以下命令调用该端点时json,它不会返回错误或警告,说明参数maxIterations高于9000。
{
"maxIterations": 15000
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@RequestBody Configuration configuration) {
...
}
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
正如评论中提到的,您应该使用@Max(9000)as@Size只能用于数组、字符串、集合和映射。
public class Configuration {
@Max(9000)
private Integer maxIterations;
// ...
}
Run Code Online (Sandbox Code Playgroud)
此外,您应该@Valid在控制器中使用注释,以便 Bean 验证器知道类中存在约束Configuration,例如:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@Valid @RequestBody Configuration configuration) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
仅当您在类路径上正确实现了Java Validation API时,这才有效。这可以通过添加以下依赖项来完成:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在 Spring boot 2.3 之前,这会自动包含在spring-boot-starter-web依赖项中,但现在您必须手动包含依赖项。
| 归档时间: |
|
| 查看次数: |
10793 次 |
| 最近记录: |