프로그래밍/Troubleshooting

Spring Boot 멀티 모듈 프로젝트에서 다른 모듈의 빈을 찾지 못할 때

저세상 개발자 2022. 5. 26. 18:54

문제 상황

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