참조
모듈이란
- 패키지(클래스들을 모으기 위한 디렉터리 구조)의 한 단계 위의 집합
- 자바에서 모듈은 독립적으로 배포될 수 있는 코드 집합의 단위
멀티 모듈 사용 이유
- 단일 모듈의 한계
- 서로 다른 프로젝트에서 공통된 코드가 사용된다면 복붙해서 사용해야 함
- 여러 프로젝트를 사용하기 위해 개발 도구 인스턴스가 여러개 사용되어야 함
- 패캐지별 의존성이 높아 하나의 수정이 여러개의 에러를 발생시킬 수 있음
- 프로젝트 규모가 커지면 각 패키지 담당 역할이 모호해짐
- 멀티 모듈의 장점
- 중복 코드가 많이 사라짐
- 여러 프로젝트를 모듈화 시켜 하나의 개발 도구에서 사용 가능
- 각가의 모듈과 패키지가 독립적인 역할을 해서 의존성이 낮아짐
모듈 임포트 이슈
build.gradle 파일에서 domain 모듈을 임포트 했으나 빈을 못찾는 상황 발생(아마 의존성만 포함되는듯)
- 즉, domain 모듈의 빈을 인식하지 못하는 이슈 발생
- 이슈 원인
- 메인 클래스의 컴포넌트 스캔 범위는 메인 클래스가 속해 있는 패키지(예: com.example.demo)의 모든 하위 패키지(예: com.example.controller, com.example.demo.repository)로 제한됨
@SpringBootApplication 어노테이션이 가지는 @ComponentScan 어노테이션에는 basePackage 즉, 패키지를 선택할 수 있으나 기본값은 메인 클래스가 속한 패키지로 지정
- 이슈 해결
@EnableJpaRepositories 어노테이션을 통해 해결이 가능하며 basePackages로 해당 모듈 main 패키지 하위 경로를 입력해주면 됨
- 또는 패키지 명을 동일시키는 경우 위 어노테이션을 적용하지 않아도 적용 가능
- 추가적으로 entity도
@EntityScan 어노테이션을 통해 해결 가능