Spring in action@valid 인증 이 적용 되 지 않 는 문 제 를 어떻게 해결 합 니까?

Spring in action@valid 인증 이 유효 하지 않 음 해결
책 에 있 는 예제 코드 에 따라 이 루어 졌 으 나 검증 이 추가 되 었 으 나 효력 이 발생 하지 않 았 다.
Spring 은 Api 를 사용 하 는 지 검 사 를 제 공 했 지만 실현 을 제공 하지 않 았 기 때문에 실행 패 키 지 를 직접 가 져 와 야 합 니 다.
그래서 구현 패키지 가 져 오기:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.1.1.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>
그러나 문제 가 해결 되 지 않 아 프로그램 이 정상적으로 실행 되 고 검증 이 유효 하지 않 습 니 다.
이전에 Maven 으로 jar 신문 을 가 져 왔 을 때 찾 을 수 없 음 을 알려 줍 니 다.이전의 해결 방법 은 Jar 가방 을 Tomcat 의 lib 폴 더 에 버 리 는 것 이 었 다.
그래서 위 에 Maven 에서 다운로드 한 jar 가방 두 개 를 잃 어 버 렸 습 니 다.과연 변화 가 생 겼 습 니 다.이번에 오류 가 발생 하여 프로그램 이 정상적으로 작 동 하지 못 했 습 니 다.
오류 보고:
Hibernate Validator java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl
그리고 해결 방법 을 찾 았 습 니 다.Stack Overflow 에서 해결 방법 을 찾 았 습 니 다.org.jboss.logging 과 com.faster xml classmate 가방 이 없어 서 Maven 에 추 가 했 습 니 다.

  <dependency>
    <groupId>org.jboss.logging</groupId>
      <artifactId>jboss-logging</artifactId>
      <version>3.3.2.Final</version>
  </dependency>
  <dependency>
      <groupId>com.fasterxml</groupId>
      <artifactId>classmate</artifactId>
      <version>1.3.4</version>
  </dependency>
그러나 문 제 를 해결 하지 못 했 습 니 다.옛날 방법 으로 이 두 개의 Jar 가방 을 Tomcat 의 lib 폴 더 에 버 리 고 문 제 를 해결 합 니 다.
최근 Maven 에서 가 져 온 가방 이 실 행 될 때 유효 하지 않 은 문제 가 많이 발생 했 습 니 다.오 류 를 보고 하지 않 지만 실 행 될 때 nodefClass 오류 가 발생 했 습 니 다.
해결책 찾기:아이디어 가 져 오기 maven 프로젝트 에 jar 패키지 가 부족 한 문 제 를 해결 하 는 방법
springboot@Validate 가 유효 하지 않 은 이유
vaidate 관련 주 해 를 사용 하 였 으 나 유효 하지 않 은 문제 입 니 다.

public class LoginRequest implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "   ", required = true, example = "18888888")
    @Pattern(regexp = RegularConstants.PHONE, message = "        ")
    @JsonProperty(value = "phone")
    private String phone;
    @ApiModelProperty(value = "  ", required = true, example = "1~[6,18]")
    @Pattern(regexp = RegularConstants.PASSWORD, message = "      ,         ,   6~18  ,      、      ")
    private String password;
}
해결 방향
hibenate 관련 의존 도입

       <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.21.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>3.0.0</version>
        </dependency>
관련 설정

@Configuration
public class ValidatorConfiguration {
    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                .configure()
                .addProperty("hibernate.validator.fail_fast", "true")
                .buildValidatorFactory();
        return validatorFactory.getValidator();
    }
}
전역 차단 인증 오류

@RestControllerAdvice
public class WebGlobalExceptionHandler {
//    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    /**
     *   JSON    
     */
//    @ResponseStatus(HttpStatus.OK)
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public CommonResult bindException(MethodArgumentNotValidException e) {
        BindingResult bindingResult = e.getBindingResult();
        return CommonResult.failed(ExceptionCodeEnum.VALIDATE_FAILED,Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
    }
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기