Spring Boot에서 멀티 모듈 프로젝트 생성하기
Overview
Spring Boot는 현대적인 Java 애플리케이션을 쉽게 개발할 수 있도록 도와주는 강력한 프레임워크입니다. 멀티 모듈 프로젝트는 이러한 Spring Boot 애플리케이션을 구성하는 데 있어 매우 유용한 접근 방식입니다. 각 모듈은 특정 기능이나 서비스에 대한 책임을 지니며, 서로 다른 모듈 간의 의존성을 명확하게 정의함으로써 코드의 유지보수성과 재사용성을 높일 수 있습니다. 이번 글에서는 Spring Boot에서 멀티 모듈 프로젝트를 어떻게 구성하고 관리할 수 있는지에 대해 자세히 설명하겠습니다.
1. 멀티 모듈 프로젝트란?
멀티 모듈 프로젝트는 여러 개의 모듈(또는 서브 프로젝트)로 구성된 프로젝트입니다. 각 모듈은 독립적인 기능을 제공하며, 특정 책임을 가지고 있습니다. 예를 들어, 하나의 프로젝트에 데이터베이스 관련 코드, 비즈니스 로직, API 통신 등을 각각 다른 모듈로 나누어 관리할 수 있습니다.
예시
- common: 공통적으로 사용하는 유틸리티 클래스와 설정 파일을 포함
- service: 비즈니스 로직을 처리하는 모듈
- repository: 데이터베이스와의 통신을 담당하는 모듈
- api: 외부 시스템과의 API 통신을 관리하는 모듈
2. 프로젝트 구조
멀티 모듈 프로젝트는 일반적으로 다음과 같은 디렉토리 구조를 가집니다:
my-multi-module-project
│
├── common
│ ├── src
│ ├── pom.xml
│
├── service
│ ├── src
│ ├── pom.xml
│
├── repository
│ ├── src
│ ├── pom.xml
│
├── api
│ ├── src
│ ├── pom.xml
│
└── pom.xml
설명
- common: 공통 라이브러리 및 유틸리티가 포함된 모듈
- service: 비즈니스 로직을 구현하는 모듈
- repository: 데이터베이스 접근을 처리하는 모듈
- api: 외부 API와의 통신을 담당하는 모듈
- pom.xml: 전체 프로젝트의 빌드와 의존성을 관리하는 최상위 POM 파일
3. 최상위 POM 파일 구성
멀티 모듈 프로젝트에서 가장 중요한 부분 중 하나는 최상위 POM 파일입니다. 최상위 POM 파일에서 각 모듈 간의 의존성을 정의할 수 있습니다.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-multi-module-project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>service</module>
<module>repository</module>
<module>api</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.5.4</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
설명
- groupId, artifactId, version: 프로젝트의 메타 정보를 정의합니다.
- modules: 하위 모듈을 정의합니다.
- dependencyManagement: 모든 모듈에서 공통으로 사용할 의존성을 관리합니다.
4. 각 모듈의 POM 파일 설정
각 모듈에서도 필요한 의존성을 추가하고, 상위 POM 파일을 부모로 설정해야 합니다.
예시: common/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example</groupId>
<artifactId>my-multi-module-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>common</artifactId>
</project>
설명
- parent: 최상위 POM 파일을 지정하여 상속받습니다.
- artifactId: 모듈의 고유 이름을 지정합니다.
5. 멀티 모듈 프로젝트의 이점
- 구조화된 코드: 각 모듈이 특정 기능에 대한 책임을 지니므로, 코드가 잘 조직되어 가독성이 높아집니다.
- 유지보수 용이: 변경 사항이 특정 모듈에 국한되므로, 버그 수정이나 기능 추가 시 영향을 받는 범위가 줄어듭니다.
- 재사용성: 공통 기능을 가진 모듈을 다른 프로젝트에서도 쉽게 재사용할 수 있습니다.
6. 테스트와 빌드
각 모듈에 대해 개별적으로 테스트를 작성할 수 있으며, Maven을 통해 모든 모듈을 한 번에 빌드할 수 있습니다. Maven 명령어는 다음과 같습니다.
mvn clean install
이 명령어는 모든 모듈을 순차적으로 빌드하고, 테스트를 수행합니다. 만약 특정 모듈에서 문제가 발생하면, Maven은 해당 모듈의 빌드 에러를 출력합니다. 예를 들어, 다음과 같은 에러가 발생할 수 있습니다.
[ERROR] Failed to execute goal on project service: Could not resolve dependencies for project com.example:service:jar:1.0-SNAPSHOT: Could not find artifact com.example:common:jar:1.0-SNAPSHOT -> [Help 1]
이 에러는 common
모듈의 빌드가 실패했거나, 해당 모듈이 존재하지 않음을 나타냅니다. 이 경우, common
모듈을 확인하여 빌드 상태를 점검해야 합니다.
7. 결론
Spring Boot의 멀티 모듈 프로젝트는 코드의 구조화, 유지보수성, 재사용성을 높여주는 효과적인 방법입니다. 각 모듈은 명확한 책임을 가지며, 서로 독립적으로 개발 및 테스트할 수 있습니다. 최상위 POM 파일을 활용하여 모든 모듈의 의존성을 관리하면, 복잡한 애플리케이션도 체계적으로 구성할 수 있습니다.
참고문서
'Study Information Technology' 카테고리의 다른 글
Spring Boot와 RESTful 웹 서비스 현대 애플리케이션 개발의 핵심 (0) | 2024.10.14 |
---|---|
Spring Boot와 Hibernate 통합 ORM의 힘을 활용하자 (0) | 2024.10.14 |
Spring Boot와 Apache Kafka Streams 통합 실시간 데이터 처리 및 분석의 시작 (0) | 2024.10.14 |
간단한 전자상거래 애플리케이션 구축하기 Spring Boot 활용 (0) | 2024.10.14 |
Spring Boot와 Apache Camel 통합하기 (0) | 2024.10.14 |