본문 바로가기
공부방/오류

Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

by SmartCow 2024. 12. 24.

개발서버를 셋팅하는 와중에 
톰캣 실행시 이런 오류가 떠버림

Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

이것이 무엇인고.....하고 찾아봤다.

 

오류 원인

  • 프로젝트에 Bean Validation 구현체(Hibernate Validator 등)가 누락됨
  • Maven 또는 Gradle에서 의존성이 추가되지 않음
  • 클래스 경로(classpath)에 Bean Validation Provider가 로드되지 않음

해결 방법

1. Hibernate Validator 라이브러리 추가

Maven 프로젝트

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.5.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.0</version>
</dependency>
    

Gradle 프로젝트

implementation 'org.hibernate.validator:hibernate-validator:6.2.5.Final'
implementation 'org.glassfish:javax.el:3.0.0'
    

2. 클래스 경로 확인

  • 의존성을 추가한 뒤, 빌드 명령을 실행하여 라이브러리가 다운로드되었는지 확인
  • Maven: mvn clean install
    Gradle: gradle build

3. Spring 설정 확인

Spring에서 LocalValidatorFactoryBean이 제대로 등록되었는지 확인

Java Config

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;

@Configuration
public class AppConfig {

    @Bean
    public LocalValidatorFactoryBean validatorFactory() {
        return new LocalValidatorFactoryBean();
    }
}
    

XML Config

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
    

4. 의존성 충돌 방지

Java EE API가 포함된 경우 충돌을 방지하기 위해 적절한 버전을 추가하거나 제외

Maven

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
    <scope>provided</scope>
</dependency>
    

Gradle

implementation 'javax.validation:validation-api:2.0.1.Final'
    

예제 코드

유효성 검사 클래스

import javax.validation.constraints.NotNull;

public class User {
    @NotNull(message = "이름은 필수.")
    private String name;

    // Getters and Setters
}
    

Spring 컨트롤러

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@Validated
public class UserController {

    @PostMapping("/user")
    public String createUser(@RequestBody @Valid User user) {
        return "User created: " + user.getName();
    }
}
    

요약

  • Hibernate Validator 의존성을 추가
  • 필요 시 Spring에서 LocalValidatorFactoryBean을 명시적으로 등록
  • 애플리케이션을 재구동하여 오류가 해결되었는지 확인

 

하지만 저거 무시하고 그냥 해봤는데.... 실행이 되더라...
오류를 무시해도 별로 찜찜하지않다면 그냥 두고 해도 될듯하다!