springboot 매개 변수 형식 검사 작업

springboot 매개 변수 형식 검사@Validated 문자 의미 검사
在这里插入图片描述 @RequestBody이 주 해 는 더 이상 말 할 필요 가 없다.@Validated글자 의 의미 검증 은@NotBlank 또는@NotNull 주석 에 맞 춰 야 유효 합 니 다.
요청 체 인자 에 들 어 갑 니 다.
在这里插入图片描述
springboot 매개 변수 주석 검사
1.의존 도 추가

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

package com.xl.annotation;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class User {

        @NotNull(message = "ID    ")
        @Range(min = 1, max = 100, message = "ID   1 100  ")
        private Integer id;

        @NotNull(message = "      ")
        @Length(min = 2, max = 6, message = "     2 6   ")
        private String name;

        @NotNull(message = "      ")
        @DecimalMax(value = "30.50", message = "      30.5")
        @DecimalMin(value = "1.50", message = "      1.5")
        private BigDecimal amount;

        @NotNull(message = "      ")
        @Past(message = "       ")
        private Date birthday;

        @NotBlank(message = "      ")
        @Email(message = "       ")
        private String email;

        @NotBlank(message = "       ")
        @Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "       ")
        private String phone;
}
2.controller 층

package com.xl.annotation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.ValidationException;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

@RestController
@Validated
@Api(value = "    ",description = "    ")
public class MobileController {
@ApiOperation("    ")
@RequestMapping("/phone")
    public String mobilePattern( Phone phone){
        return "chengg";
    }
    @PostMapping("/getUser")
    @ApiOperation("    12")
    public String getUserStr( @NotNull(message = "name     ")@RequestParam String name,
                              @Max(value = 99, message = "    99 ")@RequestParam Integer age) {
        return "name: " + name + " ,age:" + age;
    }
   /* @PostMapping("/getUser1")
    @ApiOperation("    c")
    public String getUser(@RequestBody @Validated User user, BindingResult bindingResult) {
        validData(bindingResult);
        return "name: " + user.getName() + " ,age:" + user.getAge();
    }*/
    private void validData(BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            StringBuffer sb = new StringBuffer();
            for (ObjectError error : bindingResult.getAllErrors()) {
                sb.append(error.getDefaultMessage());
            }
            throw new ValidationException(sb.toString());
        }
    }

    @PostMapping("/test")
    @ApiOperation(value = "  ", notes = "")
    public String  test(@ApiParam(name = "test", value = "  ", required = true) @Validated @RequestBody User test, BindingResult bindingResult) {
        validData(bindingResult);
        if(bindingResult.hasErrors()){
            String errorMsg = bindingResult.getFieldError().getDefaultMessage();
            return errorMsg;
        }
        return "      ";
    }
}
3.이상 종 류 를 던 지 는 사용자 정의

package com.xl.annotation;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.ValidationException;
import java.util.Set;

/**
 *          
 */
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ValidationException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handle(ValidationException exception) {
        if(exception instanceof ConstraintViolationException){
            ConstraintViolationException exs = (ConstraintViolationException) exception;

            Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
            for (ConstraintViolation<?> item : violations) {
                //          
                System.out.println(item.getMessage());
            }
        }
        return exception.getMessage();
    }
}
4.첫 번 째 인자 가 합 법 적 이지 않 을 때 즉시 오 류 를 되 돌려 줍 니 다.계속 검사 하지 않 습 니 다.

package com.xl.annotation;
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

@Configuration
public class ValidatorConf {
    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
                .configure()
                .failFast( true )
                .buildValidatorFactory();
        Validator validator = validatorFactory.getValidator();
        return validator;
    }
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기