Spring18 QueryDsl-required a bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' 해결방법 QueryDsl을 적용하고 애플리케이션 run을 하는데, "required a bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' that could not be found." 라는 에러가 발생했습니다. bean 등록 관련 에러이기에 @Component annotation 여부를 확인했고, 다 제대로 애노테이션이 붙어있었기에 어떻게 해결하면 좋을지 알기 어려웠습니다. 그러던 중에 JPA configuration을 따로 설정해주어야 한다는 글을 읽게 되었고 해당 방식으로 해결하였습니다. package com.courseori.server.config; import com.querydsl.jpa.impl.JPAQueryFactory; import org.spring.. 2022. 10. 8. Parameter 2 of constructor in ... that could not be found error Controller test를 하려는데 자꾸만 아래와 같은 에러로 인해 진행이 되지 않았습니다. @Component(@Service, @Repository 등 포함) annotation을 붙이지 않아 생기는 에러라고 하여 해당하는 클래스들을 다 확인했지만 annotation은 다 잘 설정되어 있었습니다. 그러다가 결국 알게된 원인은 해당 class를 @MockBean으로 등록(?)하지 않았기 때문이었습니다. 🥹 사실 문제를 일으켰던 bean들은 test code에서는 명시적으로 사용되지 않았기 때문에 @MockBean으로 필요할 것이라고 전혀 생각지 못하였습니다. 그런데 그 친구들을 등록해주니 해당 문제에서 벗어날 수 있었습니다. ㅎㅎ 혹시 동일한 문제로 고통받고 계신분이 있으시다면 도움이 되었으면 좋겠.. 2022. 9. 27. RestController 테스트 시 JWT 생성하기 Spring Security dependency가 적용된 상태에서는 unit test를 할 때도 security 관련 처리를 해주어야 합니다. 즉, 회원 인증 절차를 포함해주어야 합니다. (인증된 유저가 서비스를 이용한다는 가정) 만약에 인증 과정을 거치지 않으면 아래처럼 Unauthorized 에러가 발생합니다. 어떠한 방법으로 해결하면 되는지 찾아보니 @WithMockUser를 사용하면 된다는 것을 알게 되었습니다. 문서에 상세하게 사용법이 나와있는데, 기본적으로는 test하고자 하는 메서드 테스트 코드에 @WithMockUser만 붙여주면 된다고 합니다. 사용해보니 테스트 통과가 되더라구요. 하지만 특정한 username이나 password를 사용해서 인증을 하고 싶은 경우 혹은 권한을 달리하여 인.. 2022. 9. 20. @Import 애노테이션의 쓰임 예전에 문득 'XXXConfig.class 파일들이 굉장히 많아지면 관리가 힘들겠다' 라는 생각을 한 적이 있었습니다. 그런데 오늘 Spring 공식 문서를 살펴보다가 @Import 애노테이션이라는 것을 보았고, 이전에 의문을 가졌던 부분을 해당 애노테이션으로 어느 정도 보완이 된다는 것을 알게 되었습니다. 아래 예시는 공식 문서에 나온 예시입니다. @Configuration public class ConfigA { @Bean public A a() { return new A(); } } @Configuration @Import(ConfigA.class) //이 부분! public class ConfigB { @Bean public B b() { return new B(); } } 보면 ConfigB에.. 2022. 9. 11. @Nullable 사용 시 warning 발생 없애기 문제 프로젝트를 run 할 때 어느 순간부터 아래와 같은 warning이 발생해서 원인이 무엇인지 알아보았습니다. Warning:java: unknown enum constant javax.annotation.meta.When.MAYBE reason: class file for javax.annotation.meta.When not found 원인 @Nullable 애노테이션을 사용하면서 생기는 경고였는데, javax.annotation.meta.When 이라는 enum이 내 프로젝트 runtime에서 발견되지 않아서 나오는 경고였습니다. org.springframework.lang.Nullable이 해당 enum을 참조하는데 자동으로 그 enum이 생기지 않아서라고 하더라구요. 해결 build.grad.. 2022. 9. 9. Spring 사용 시 DB를 H2에서 MySQL로 변경하기(JPA사용) In-memory DB인 h2를 사용하며 프로젝트를 구현하고 있었고 최종 배포의 시점이 다가오기 전에 미리 MySQL로 변경하게 되었습니다. 추가할 설정이나 변경사항이 많을까 싶었는데 다행히 상당히 쉬웠습니다! 사용한 Version 정보 Gradle 7.5 JDK 11 1. mysql에 접속해서 사용할 database 만들어놓기 정보를 저장할 DB를 설정해 줄 것이기 때문에 미리 사용할 database를 만들어 놓습니다. 2. build.gradle dependency 추가 원래 jpa를 사용하고 있었기 때문에 jpa dependency는 들어가 있었고, mysql dependency만 추가로 넣어주었습니다. dependencies { /* jpa */ implementation 'org.springfr.. 2022. 8. 31. 이전 1 2 3 다음 반응형