[英]how to make spring starter project(spring boot) for Java version 6 in eclipse?
[英]How are hibernate Validators integrated into spring boot starter project
我經常對 spring 中的字段使用約束。 約束是標准的或自定義的
public abstract class OrganizationEntity {
@Length(min = 1 , max = 256, message = "Organization name max length is 256 and min length is 1")
@NotNull(message = "Organization name should not be empty")
@Pattern(regexp = "^[a-zA-Z0-9][-a-zA-Z0-9]+[a-zA-Z0-9]$",message = "Organization name can contain Alphanumeric character and Hyphen in the middle")
public abstract String getName();
}
在導航到長度或模式注釋時,我看到注釋 org.hibernate.validator.constraints 的定義
@Documented
@Constraint(
validatedBy = {}
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(List.class)
public @interface Length {
int min() default 0;
int max() default Integer.MAX_VALUE;
String message() default "{org.hibernate.validator.constraints.Length.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface List {
Length[] value();
}
}
我看到 validBy 留空,這意味着有些機制/庫已經實現了這些檢查。 哪個庫提供這些實現? spring 如何管理此驗證流程。
Hibernate 提供驗證實現,並由 Spring 使用。
我可能過於簡單化了,但據我了解 Spring 為 Spring 的應用程序上下文使用配置了 Hibernate 的ValidationFactory
實現( ValidationFactoryImpl
)和Validator
和ExecutableValidator
實現( ValidatorImpl
),為其他BindingResult
組件公開它並將其轉換為驗證結果。
同時,Hibernate 的ValidatorImpl
使用驗證上下文,其中ConstraintValidator
被注冊為 map 與 package javax.validation.constraints
不同的注解作為鍵,以及與 Hibernate 自己的約束,如@URL
和@ISBN
. 這個 map 可以在ConstraintHelper
class 中找到。
例如,您可以找到在那里注冊的PatternValidator
以驗證帶有@Pattern
注釋的值。
然后我們有下一個 Hibernate 驗證流程(再次 - 簡化):
ValidatorImpl
嘗試驗證某些內容並創建MetaConstraint
(幫助 class 具有驗證所需的所有信息);MetaConstraint
為多個約束檢查創建ConstraintTree
;ConstraintTree
調用ConstraintValidatorManager
及其getInitializedValidator
方法,該方法從前面提到的 map 返回特定注釋所需的ConstraintValidator
。 因此,Spring 使用的驗證框架已經知道哪些ConstraintValidator
實例用於特定的驗證注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.