SpringBoot 는 vaidation 을 사용 하여 매개 변수 검증 의 실현 절 차 를 밟 습 니 다.

1.의존 도 추가
hibenate-validator 직접 추가

<dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.2.Final</version>
        </dependency>
spring-boot-starter-validation 추가

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>
spring-boot-starter-web 추가

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
2.설정 파일,fail 을 설정 하려 면fast 속성 이 있 으 면 true 는 매개 변수 가 잘못 되 었 을 때 되 돌아 오 는 것 을 표시 합 니 다.기본 값 으로 모든 매개 변 수 를 검사 하려 면 설정 파일 이 있어 야 합 니 다.

import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

/**
 * hibernate      
 */
@Configuration
public class ValidatorConfig extends WebMvcConfigurerAdapter {


    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                .configure()
                //  fail_fast   true  ,       ,    false        
                .failFast(true)
//                .addProperty("hibernate.validator.fail_fast", "true")
                .buildValidatorFactory();

        return validatorFactory.getValidator();
    }

    /**
     * requestParam     
     * @return
     */
    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {

        MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
        methodValidationPostProcessor.setValidator(validator());
        return methodValidationPostProcessor;
    }


    @Override
    public org.springframework.validation.Validator getValidator() {
        return new SpringValidatorAdapter(validator());
    }

}

그 중에서 methodValidationPostProcessor 는 requestParam 에 작용 합 니 다.
WebMvcConfigurerAdapter 를 계승 하고 getValidator()방법 을 다시 쓰 는 것 은 spring 의 요청 검증 Validator 가 우리 위의 vaidator 를 사용 하여 설정 한 failFast 를 유효 하 게 하 는 것 입 니 다.구체 적 으로 org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport\#mvcValidator 방법 을 참고 하 십시오.
3.이상 처리 통일

/**
     * hibernate-valid             
     * @param ex
     * @return
     */
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public WebResult validationErrorHandler(BindException ex) {
        List<String> collect = ex.getBindingResult().getAllErrors()
                .stream()
                .map(ObjectError::getDefaultMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";"));

    }

    /**
     * hibernate-valid             
     * @param ex
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public WebResult validationErrorHandler(MethodArgumentNotValidException ex) {
        List<String> collect = ex.getBindingResult().getAllErrors()
                .stream()
                .map(ObjectError::getDefaultMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(), StringUtils.join(collect, ";"));

    }



    /**
     * RequestParam      
     * @param ex
     * @return
     */
    @ExceptionHandler(ConstraintViolationException.class)
    @ResponseBody
    public WebResult validationErrorHandler(ConstraintViolationException ex) {
        List<String> errorInformation = ex.getConstraintViolations()
                .stream()
                .map(ConstraintViolation::getMessage)
                .collect(Collectors.toList());
        return new WebResult(Errors.INCORRECT_PARAM_FORMAT.getError(),StringUtils.join(errorInformation, ";"));
    }
4.사용
@RequestParam 처럼 매개 변수 검 사 를 직접 쓰 면 클래스 나 대응 하 는 방법 에 Validated 주 해 를 추가 하고,실체 클래스 가 받 아들 이면 매개 변수 에 있 는 실체 앞 에@Valid 를 추가 하면 됩 니 다.
이상 은 SpringBoot 에서 vaidation 을 사용 하여 매개 변수 검 사 를 하 는 실현 절차 에 대한 상세 한 내용 입 니 다.SpringBoot 에서 vaidation 을 사용 하여 매개 변수 검 사 를 하 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기