Springboot
[스프링 부트] 멀티 모듈 Bean 등록
코딩 못하는 감자
2024. 7. 8. 22:52
멀티 모듈에서 다른 패키지의 Repository를 autowired 하려는 과정에서
컨테이너에 등록이 안되어 있다는 오류가 있다.
오류의 이유는
기본적으로 스프링은 애플리케이션의 기본 패키지와 하위 패키지만 스캔을 한다.
따라서 다른 패키지의 어노테이션의 존재를 알지 못한다.
-> AccountRepository의 존재에 대해 알지 못함.
해결법은 아래와 같다
1. 패키지 명을 동일하게 만든다.
ex) org.delivery.api, org.delivery.db 이렇게 두 패키지가 있으면 패키지 명을 동일하게 바꾼다.
-> org.delivery.api, org.delivery.api
하지만 여러 패키지를 두는 경우가 많기 때문에 이 방법은 근본적인 해결책은 아니다.
다른 방법으로는
2. 다른 패키지에 있는 컴포넌트도 빈으로 등록할 수 있게 설정한다.
설정을 통해 스프링에서 다른 패키지의 존재도 알게 설정하는 방법이다.
@Configuration // 설정임을 알림
@EntityScan(basePackages = "org.delivery.db") // 경로에 있는 스캔하겠다.
@EnableJpaRepositories(basePackages = "org.delivery.db") // 하위에 있는 레포도 빈으로 등록
public class JpaConfig {
}
이와 같이 Config를 작성하여 다른 패키지의 엔티티와 레포도 인식하도록 설정하였다.