Kotlin: 必须引入 spring-boot-starter-validation
implementation("org.springframework.boot:spring-boot-starter-validation")
Controller 必须添加 @Validated 注解,对应集合参数添加 @Valid 注解
@Validated
@RestController
class TestController(
private val userRepository: UserRepository,
) {
@PostMapping("saveBatch")
suspend fun saveBatch(@RequestBody @Valid users: List<User>): List<Long> =
userRepository.saveAll(users).map { it.id ?: -1 }
}
测试结果:

Java:可以单纯引入 hibernate-validator
implementation("org.hibernate.validator:hibernate-validator:8.0.1.Final")
Controller 必须添加 @Validated 注解,对应集合的泛型添加 @Valid 注解
@Validated
@RestController
public class JavaController {
private final UserRepository userRepository;
public JavaController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@PostMapping("saveList")
public Iterable<User> saveList(@RequestBody List<@Valid User> users) {
return userRepository.saveAll(users);
}
}
测试结果与 Kotlin 一致

本文介绍了在SpringBoot3中,使用Kotlin和Java进行表单验证时,针对List集合的不同处理方式。Kotlin需要引入spring-boot-starter-validation库,Controller需添加@Validated和对应集合参数的@Valid注解。Java则只需引入hibernate-validator,并在Controller使用@Validated,同时为集合泛型添加@Valid注解。测试结果显示,两种语言的验证效果相同。
2401





