다음과 같은 형태로 구성하려고 합니다.
- root
- apps
- app-api
- app-batch
- libs
- adapter-http
- adapter-persistence
- application
- protocols
root
프로젝트 아래에는 apps
, libs
, protocols
의 모듈 3개가 존재합니다.
apps
모듈은 외부로부터 request 를 받고, response 를 되돌려주는 역할을 수행하게 됩니다. 보통 API 들이 위치하게 되며, spring-batch 등 배치성 어플리케이션도 존재할 수 있습니다.libs
모듈은 내부 비즈니스 로직을 포함하는 모듈입니다. 타 서비스와의 통신을 위한 adapter-http
도 있고, DB 와의 통신을 위한 adapter-persistence
모듈도 있습니다. 핵심 비즈니스 로직은 application
내부에 존재합니다.protocols
모듈은 전체 프로젝트에서 공통적으로 사용할 수 있는 코드를 포함하고 있습니다. 예를 들어, app-api
에서는 API 응답값을 반환해야 하는데, 이 때 내부 반환 객체에 공통 반환 객체로 한번 감싸서 반환할 수 있습니다.위와 같은 형태로 구성하기 위해서는 먼저 빈 프로젝트를 생성해야 합니다.
인텔리제이에서 New Project
> Gradle
를 클릭하여 Gradle 기반 빈 프로젝트를 생성합니다.
프로젝트 이름은 sample-project
로 해보겠습니다.
생성을 하고 나면 아래와 같은 구조로 프로젝트가 셋업이 됩니다.
생성된 파일들을 확인해보겠습니다.
gradle wrapper 구조는 다음과 같이 구성:
|-- gradle
| |-- wrapper
| |-- gradle-wrapper.jar // wrapper 파일
| |-- gradle-wrapper.properties // wrapper 설정 파일
|-- gradlew // 유닉스용 wrapper 실행 스크립트, ./gradlew {task} 형태로 사용
|-- gradlew.bat // 윈도우용 wrapper 실행 스크립트