Spring @ Valid 의 두 가지 용법

7900 단어 수필
우선 제한 설명
@Null	     null
@NotNull	      null
@AssertFalse	     false
@AssertTrue	     true
@DecimalMax(value)	                
@DecimalMin(value)	                
@Digits(integer,fraction)	         ,            integer,           fraction
@Future	            
@Max(value)	                
@Min(value)	                
@Past	            
@Pattern(value)	              
@Size(max,min)	         min max  
@Past	        (    )      
@NotEmpty	          null    (       0、      0)
@NotBlank	           (  null、          0),   @NotEmpty,@NotBlank                     
@Email	         Email,           flag      email  

실체 류


public class AAA  {

    @Pattern(
            regexp = "^(Draft|Active|Inactive)$",
            message = "Please input valid action, only Draft|Active|Inactive " + "is allowed")
    private String action;

    @Pattern(regexp = "^.{0,100}$", message = "Product name only allows 1-100 characters")
    private String productName;

    @Pattern(regexp = "^.{0,500}$", message = "Product description only allows 1-500 characters")
    private String description;

  
    private String startDate;

   
    private String endDate;

    @Pattern(
            regexp = "^(Day|Week|Month|Year)$",
            message = "Please input valid termUnit, only Day|Week|Month|Year is " + "allowed")
    private String termUnit;

    @Pattern(regexp = "(\\d)?", message = "Please input valid termValue, termValue only allows 1 digits")
    private String termValue;

    @Pattern(
            regexp = "^(\\d){0,18}$",
            message = "Please input valid counterLimit, counterLimit only allows 1-18 " + "digits")
    private String counterLimit;

    @Pattern(regexp = "^(\\d){0,18}$", message = "Please input valid minLimit, minLimit only allows 1-18 digits")
    private String minLimit;

    @Pattern(regexp = "^(\\d){0,18}$", message = "Please input valid maxLimit, maxLimit only allows 1-18 digits")
    private String maxLimit;

    @Pattern(
            regexp = "^(Day|Week|Month|Year|Times)$",
            message = "Please input valid rolloverPeriodUnit, only " + "Day|Week|Month|Year|Times is allowed")
    private String rolloverPeriodUnit;

    @Pattern(
            regexp = "^(\\d){0,3}$",
            message = "Please input valid rolloverPeriodValue, rolloverPeriodValue only " + "allows 1-3 digits")
    private String rolloverPeriodValue;

    @Pattern(
            regexp = "^(\\d){0,3}$",
            message = "Please input valid maxNumberOfRollover, rolloverPeriodValue only " + "allows 1-3 digits")
    private String maxNumberOfRollover;

    @Pattern(
            regexp = "^(.){0,18}$",
            message = "Please input valid fundsLenderId, fundsLenderId only allows 1-18 " + "characters")
    private String fundsLenderId;

    @Pattern(
            regexp = "^(\\d){0,3}$",
            message = "Please input valid daysToWatch, daysToWatch only allows 1-3 " + "digits")
    private String daysToWatch;

    @Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToLost, daysToLost only allows 1-3 digits")
    private String daysToSubstandard;

    @Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToLost, daysToLost only allows 1-3 digits")
    private String daysToLost;

    @Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToBad, daysToBad only allows 1-3 digits")
    private String daysToBad;

    private String loanType;


    @Pattern(regexp = "^(1000|5000)$", message = "Please input valid availableIdentityType, only 1000|5000 is allowed")
    private String availableIdentityType;

    @Pattern(
            regexp = "^(.){0,10}$",
            message =
                    "Please input valid currencyInMultiplesOf, currencyInMultiplesOf only allows 1-10 " + "characters")
    private String currencyInMultiplesOf;

    @Pattern(regexp = "^(.){0,10}$", message = "Please input valid strategyId, strategyId only allows 1-10 characters")
    private String strategyId;

    @Pattern(
            regexp = "^(Weekly|Monthly|Maturity)$",
            message = "Please input valid repaymentFrequency, only " + "Weekly|Monthly|Maturity is allowed")
    private String repaymentFrequency;

    @Pattern(
            regexp = "^(\\d){0,3}$",
            message = "Please input valid repaymentDay, repaymentDay only allows 1-3 " + "digits")
    private String repaymentDay;

    @Pattern(regexp = "^(F|G|M|S)$", message = "Please input valid repaymentScheduleType, only F|G|M|S is allowed")
    private String repaymentScheduleType;

    @Pattern(regexp = "^(Y|N)$", message = "Please input valid supportInstallment, only Y|N is allowed")
    private String supportInstallment;

    @Pattern(regexp = "^(Y|N)$", message = "Please input valid supportAutoRepayment, only Y|N is allowed")
    private String supportAutoRepayment;

    @Pattern(regexp = "^(Y|N)$", message = "Please input valid allowRepayInAdvance, only Y|N is allowed")
    private String allowRepayInAdvance;

    @Pattern(
            regexp = "^(\\d){0,3}$",
            message = "Please input valid statementDaysBeforDue, statementDaysBeforDue only allows 1-3" + " digits")
    private String statementDaysBeforDue;

    @Pattern(regexp = "^(Y|N)$", message = "Please input valid autoChangeRiskCategory, only Y|N is allowed")
    private String autoChangeRiskCategory;

  
    @Pattern(regexp = "^(Y|N)$", message = "Please input valid deductAccessFee, only Y|N is allowed")
    private String deductAccessFee;

  
    @Pattern(
            regexp = "^(All|Same|Unlimited)$",
            message = "Please input valid rejectWhenOverdue, only " + "All|Same|Unlimited is allowed")
    private String rejectWhenOverdue;

   
}


첫 번 째 는 보통 controller 입구 에서 매개 변 수 를 받 습 니 다. @ Valid 는 다음 과 같 습 니 다.
  @ApiOperation(value = "/v1/aa", notes = "Modify product info")
    @PostMapping(value = "/v1/aa/{productId}")
    @ResponseBody
    public JsonObject modifyProduct(
            @RequestBody @Valid ModifyProductInfoRequest request,
            @PathVariable(name = "productId") Long productId,
            @org.springframework.web.bind.annotation.RequestHeader(value = "X-Operator-ID", required = false)
                    String operatorID)

만약 이때 조건 을 만족 시 키 지 못 하면 잘못 보고 할 것 이다.
두 번 째: 업무 에서 검증 하려 면 로그 나 오류 원인 을 기록 하거나 다른 작업 을 하 는 데 편리 하 다 면 해당 서비스 에 다음 과 같은 빈 공간 실현 방법 을 만 들 수 있 습 니 다.
service A{
    public void validateRequest(@Valid AAA  requestData) {}
    }
service b{
@Resource
service A a;
   public void doSomeThing( AAA  requestData) {
   .....
  try {
           //              
           a.validateRequest(requestData);
       } catch (ConstraintViolationException e) {
           Set> constraintViolations = e.getConstraintViolations();
           for (ConstraintViolation> violation : constraintViolations) {
               String path = violation.getPropertyPath().toString();
               throw new Exception("xxxxxxxx");
           }
       }
   ....

}
   }

이렇게 처리 하려 면 반드시 대상. 방법 을 통 해 호출 해 야 합 니 다. a. vaidateRequest (requestData) 와 유사 합 니 다.그렇지 않 으 면 Spring Validation 검 사 를 촉진 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기