验证

只要类路径上存在 JSR-303 实现(例如 Hibernate 验证器),Bean Validation 1.1 支持的方法验证功能就会自动启用。这允许使用 jakarta.validation 约束对 bean 方法的参数和/或返回值进行注释。带有此类带注释方法的目标类需要使用 @Validated 注释在类型级别进行注释,以便在方法中搜索内联约束注释。

例如,以下服务触发对第一个参数的验证,确保其大小在 8 到 10 之间

  • Java

  • Kotlin

import jakarta.validation.constraints.Size;

import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

@Service
@Validated
public class MyBean {

	public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code, Author author) {
		return ...
	}

}
import jakarta.validation.constraints.Size
import org.springframework.stereotype.Service
import org.springframework.validation.annotation.Validated

@Service
@Validated
class MyBean {

	fun findByCodeAndAuthor(code: @Size(min = 8, max = 10) String?, author: Author?): Archive? {
		return null
	}

}

在约束消息中解析 {parameters} 时,会使用应用程序的 MessageSource。这允许你对 Bean Validation 消息使用 应用程序的 messages.properties 文件。一旦参数得到解析,消息插值将使用 Bean Validation 的默认插值器完成。

要自定义用于构建 ValidatorFactoryConfiguration,请定义一个 ValidationConfigurationCustomizer bean。当定义多个自定义器 bean 时,它们将根据其 @Order 注释或 Ordered 实现按顺序调用。