[Query DSL] @DataJpaTest 어노테이션을 사용한 JpaQueryFactory 빈 등록 오류

컴공생의 코딩 일기·2023년 2월 17일
0

Query DSL

목록 보기
6/6

@DataJpaTest 어노테이션을 사용한 MemberRepository 테스트 구현 중 JpaQueryFactory 빈 등록 오류를 만났다.

JpaQueryFactory 빈 설정

@EnableJpaAuditing
@Configuration
public class JpaConfig {

    @PersistenceContext
    private EntityManager em;

    @Bean
    public JPAQueryFactory jpaQueryFactory(){
        return new JPAQueryFactory(em);
    }
}

MemberRepository 테스트 코드

@DataJpaTest
class MemberRepositoryTest {

    @Autowired
    private MemberRepository repository;

    @Test
    void test(){
        Member member = Member.builder()
                .email("a")
                .password("pwd")
                .nickname("aaa")
                .build();

        Member result = repository.save(member);

        System.out.println("result = " + result);
    }

}

구글링 결과 @DataJpaTest 어노테이션은 스프링이 관리하는 모든 빈을 가져오는 것이 아니라 엔티티EntityManager 정도만 등록해주기 때문에 JpaQueryFactory 빈은 인식하지 못한다. 그러므로 JpaQueryFactory빈을 인식 할 수 있도록 별도로 @Import 어노테이션을 사용해 빈을 인식할 수 있도록 해줘야 한다.

@Import(JpaConfig.class)
@DataJpaTest
class MemberRepositoryTest {
		.......
}
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글