0. 왜 여러 개의 모듈로 구성되어 있나요?
웹 사이트에는 일반적으로 여러 기능이 있습니다.
허용 가능한 웹 사이트를 예로 들어도 다음 항목이 기본적으로 지원됩니다.
사용자 생성/삭제/수정 게시판 생성/삭제/수정 관리자 관리 |
하나의 프로젝트에서 이러한 모든 기능을 관리하는 것은 생각만 해도 복잡할 것입니다.
물론 기능이 적다면 간단하고 쉽게 개발할 수 있다.
하지만 서비스 규모가 커진다면? 체납 이런!
원한다 해도 전통적인 방식으로 개발할 수밖에 없다.
왜? 서비스의 규모는 현재 급속도로 성장하고 있지만 이를 전환하는 데 드는 기회 비용은 없습니다.
그러나 하나의 패키지에서 모두 관리하는 것은 매우 복잡합니다.
그러나 각 모듈을 개별적으로 단일 프로젝트로 빌드하면 불필요하게 리소스가 소모됩니다.
그래서 하나의 프로젝트 내에서 여러 모듈로 구성된 다중 모듈 프로젝트로 구성할 계획입니다.
1. 기본 프로젝트 구성
2. 모듈 생성
프로젝트 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 (새로 만들기) > (모듈) 버튼을 클릭하여 모듈을 생성합니다.
2-1 모듈 생성 결과
사용자 이름이 지정된 소스 디렉토리가 생성되고 루트 프로젝트(아파트) settings.gradle에서 ‘사용자’ 포함자동으로 입력됩니다.
* 미입력시 수동으로 ‘{모듈 이름}’ 포함그냥 입력
3. 여러 모듈 설정
3-1 build.gradle 설정
루트 프로젝트(app)의 build.gradle을 다음과 같이 수정합니다.
사용자 모듈을 별도의 실행 가능한 JAR 파일이 아닌 의존성으로 사용하기 때문에, bootJar 옵션 잘못된항아리 옵션 진실설정되었습니다 |
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.4'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'kr.co.dglee'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
targetCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation project(':user')
}
tasks.named('test') {
useJUnitPlatform()
}
// 하위 모듈 공통 셋팅
subprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'kr.co.dglee'
version = '0.0.1-SNAPSHOT'
compileJava.options.encoding = 'UTF-8'
sourceCompatibility = '17'
targetCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
}
project(":user") {
bootJar { enabled = false}
jar { enabled = true}
dependencies {
}
}
3-2 주요 응용 프로그램 설정
사용자 모듈의 패키지 구조는 다음과 같습니다.
kr.co.dglee.user 보지마.
앞으로는 user 외에 admin, board 등이 추가될 수 있으니 @ComponentScan의 pakcage를 설정하여 kr.co.dglee로 시작하는 모든 패키지를 찾도록 한다.
3-3 테스트 컨트롤러 및 메서드 작성
문자열 useradd를 반환하는 /users/add 테스트 메서드를 만듭니다.
4. 멀티 모듈 확인
응용 프로그램을 실행하고 http://localhost:8080/users/add에 액세스하여 useradd라는 문자열이 표시되면 성공한 것입니다.
끝…
이 프레임워크가 완성되었습니다.
그 외 Lombok, JPA, querydsl 등은 추후에 올릴 예정입니다.
회사에서 일하면서 이 프로젝트가 부족했나, 아니면 했으면 좋았을까? 우리는 우리가 하는 일에 집중할 것입니다.
안 해본 것들도 해보고 싶고, 내 지식으로 좀 더 트렌드에 맞는 것들을 배우고 싶다.