복붙노트

[SPRING] Spring-Boot javax.validation.Validator를 올바르게 삽입하는 법

SPRING

Spring-Boot javax.validation.Validator를 올바르게 삽입하는 법

JSR-303 (hibernate-validator)을 사용하여 모델의 유효성을 검사 할 때 스프링 애플리케이션 빈에 Validator를 주입하는 데 문제가있다.

나의 주요 구성 클래스는 다음과 같습니다.

@EnableAutoConfiguration
@EnableWebMvc // <---
@EnableJpaRepositories("com.example")
@EntityScan("com.example")
public class MainConfiguration {

javadocs에 따르면 :

/**
 * Provide a custom {@link Validator} instead of the one created by default.
 * The default implementation, assuming JSR-303 is on the classpath, is:
 * {@link org.springframework.validation.beanvalidation.LocalValidatorFactoryBean}.
 * Leave the return value as {@code null} to keep the default.
 */
Validator getValidator();

Hibernate-validator가 classpath에있다. 나는 그것을 저장소에 주입하려고한다.

@Repository
public class UserRepositoryImpl implements UserRepositoryCustom    {

    @Autowired
    private Validator validator;

예외가 발생했습니다.

 No qualifying bean of type [javax.validation.Validator] found for dependency:

최신 정보:

이를위한 부분적인 해결 방법은 기본 구성 클래스에서이를 정의하는 것입니다.

  @Bean
    public Validator validator() {

        return new org.springframework.validation.beanvalidation.LocalValidatorFactoryBean();
    }

그러나 통합 테스트 (org.springframework.test.context.web.WebAppConfiguration가 필요한 주석 및 주석 검증 로직 사용)가 실패합니다.

해결법

  1. ==============================

    1.다음과 같이 LocalValidatorFactoryBean 유형의 bean을 선언해야합니다.

    다음과 같이 LocalValidatorFactoryBean 유형의 bean을 선언해야합니다.

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

    XML 또는

    @Bean
    public javax.validation.Validator localValidatorFactoryBean() {
       return new LocalValidatorFactoryBean();
    }
    

    Java 구성에서.

    Spring 문서의이 부분에는 모든 세부 사항이있다.

  2. from https://stackoverflow.com/questions/23604540/spring-boot-how-to-properly-inject-javax-validation-validator by cc-by-sa and MIT license