校验

只要 classpath 上存在 Bean Validation 1.1(如 Hibernate validator)实现,方法级校验功能会自动启用。 这允许在 bean 方法的参数和/或返回值上使用 jakarta.validation 约束注解。 带有此类注解方法的目标类需在类型级别加上 @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
	}

}

应用的 MessageSource 用于解析约束消息中的 {parameters}。 这允许你使用 应用的 messages.properties 文件 作为 Bean Validation 消息。 参数解析后,消息插值由 Bean Validation 默认插值器完成。

如需自定义用于构建 ValidatorFactoryConfiguration,可定义 ValidationConfigurationCustomizer bean。 如定义了多个定制器 bean,会根据其 @Order 注解或 Ordered 实现的顺序依次调用。