문제 상황
Spring boot 멀티 모듈 프로젝트에서 다른 모듈의 빈을 찾지 못하는 상황. 두 모듈의 group 이 다름
Ex) A 모듈에서 생성한 a bean을 B 모듈 안에서 주입받고 싶음
A 모듈의 group id: com.example.a
B 모듈의 group id: com.example.b
발생 에러
생성자 주입 시 argument를 찾을 수 없다는 에러 발생
원인 및 해결 방법
원인은 두 모듈의 group id가 달라서 그런 것..! (정확히는 패키지가!)
기본적으로는 @SpringBootApplication 애노테이션이 붙은 클래스가 위치하는 곳이 basePackage로 설정되어 해당 패키지 하위 패키지의 컴포넌트를 가져옴
하지만 위 예시처럼 패키지가 다른 경우 별도로 컴포넌트 스캔을 하고싶은 패키지를 명시해줘야함
해결 방법으로는 두 가지가 있음
1. 두 모듈의 group id를 동일하게 변경
2. ComponentScan annotataion 사용 or SpringBootApplication의 scanBasePackages 값 명시
@ComponentScan(value="com.example.a")
//or
@SpringBootApplication(scanBasePackages="com.example.a")
영문 검색 키워드
spring multi module project cannot find bean
'프로그래밍 > Troubleshooting' 카테고리의 다른 글
[Junit] @SpyBean으로 @Cacheable 애노테이션이 붙은 메서드 mocking 시 문제 해결 (0) | 2022.04.09 |
---|