SpringBoot 는 vaidation 을 사용 하여 매개 변수 검증 의 실현 절 차 를 밟 습 니 다.
5509 단어 SpringBootvalidation파라미터 검사
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 을 사용 하여 매개 변수 검 사 를 하 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.