반응형
NoProviderFoundException 에러
스프링 부트 프로젝트를 빌드하면서 다음과 같은 NoProviderFoundException
에러가 발생하는 일이 생겼다.
jakarta.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
문제 발생 원인
다음과 같이 validaion 관련한 종속성을 build.gradle
에 추가하지 않아서 생긴 문제였다. 종속성을 추가한 후, gradle refresh를 해주니 정상적으로 작동하였다.
implementation 'org.springframework.boot:spring-boot-starter-validation'
spring-boot-starter-validation의 역할
그렇다면 이 spring-boot-starter-validation 종속성의 역할은 무엇일까? Maven Repository에서는 "Java Bean Validation with Hibernate Validator"을 위한 종속성이라고 설명하고 있다. 이름에서 볼 수 있듯이 Spring MVC에서 값들의 유효성을 검증하기 위한 라이브러리이다. 해당 라이브러리가 제공하는 어노테이션 목록은 다음과 같다.
@Future
: 현재보다 미래인지 확인@Past
: 현재보다 과거인지 확인@DecimalMax
: 지정된 값 이하인지 확인(null은 유효)@DecimalMin
: 지정된 값 이상인지 확인(null은 유효)@Digits(integer = ,fraction = )
: 정수부(integer)와 소수부(fraction)이 지정된 자리수 이하인지 확인@PastOrPresent
: 현재 혹은 과거인지 확인@Negative
: 음수인지 확인@Positive
: 양수인지 확인@NegativeOrZero
: 음수 또는 0인지 확인@PositiveOrZero
: 양수 또는 0인지 확인@Email
: 올바른 이메일 형식인지 확인@Min
: 값이 Min보다 작은지 확인@Max
: 값이 Max보다 큰지 확인@Size
: 값이 min과 max사이에 해당하는지 확인@NotNull
: null을 허용하지 않음@NotBlank
: null과 공백을 허용하지 않음@Null
: null만 허용@NotEmpty
: null과 공백 문자열을 허용하지 않음@AssertTrue
: true인지 확인@AssertFalse
: flase인지 확인@Pattern(regexp = )
: 지정된 정규식(regexp)을 만족하는지 확인@Size(min = , max = )
: 문자열의 길이 또는 컬렉션의 크기가 min 이상 max 이하인지 확인(null은 유효)
반응형