DUBBO參數驗證


public class ValidationParameter implements Serializable {
     
    private static final long serialVersionUID = 7158911668568000392L;
 
    @NotNull // 不允許為空
    @Size(min = 1, max = 20) // 長度或大小范圍
    private String name;
 
    @NotNull(groups = ValidationService.Save.class) // 保存時不允許為空,更新時允許為空 ,表示不更新該字 段
    @Pattern(regexp = "^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$")
    private String email;
 
    @Min(18) // 最小值
    @Max(100) // 最大值
    private int age;
 
    @Past // 必須為一個過去的時間
    private Date loginDate;
 
    @Future // 必須為一個未來的時間
    private Date expiryDate;
 
==========================================================
 
分組驗證示例:
public interface ValidationService { // 缺省可按服務接口區分驗證場景,如:@NotNull(groups = ValidationService.class)

@interface Save{} // 與方法同名接口,首字母大寫,用於區分驗證場景,如:@NotNull(groups = ValidationService.Save.class),可選
void save(ValidationParameter parameter);

void update(ValidationParameter parameter);

}
關聯驗證示例:
import javax.validation.GroupSequence;
 
public interface ValidationService {
     
    <-- @GroupSequence(Update.class) // 同時驗證Update組規則 -->
 
    @interface Save{}
    void save(ValidationParameter parameter);
 
    @interface Update{}
    void update(ValidationParameter parameter);
 
參數驗證示例:
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;

public interface ValidationService {

void save(@NotNull ValidationParameter parameter); // 驗證參數不為空

void delete(@Min(1) int id); // 直接對基本類型參數驗證

}
在客戶端驗證參數:
<dubbo:reference id="validationService" interface="com.alibaba.dubbo.examples.validation.api.ValidationService" validation="true" />
在服務器端驗證參數:
<dubbo:service interface="com.alibaba.dubbo.examples.validation.api.ValidationService" ref="validationService" validation="true" />
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM