[Spring Boot] 멀티 모듈 프로젝트 생성 / API Gateway 연결

2025. 3. 18. 20:13· BE/Spring Boot
목차
  1. 멀티 모듈 프로젝트 생성
  2. 모듈 생성
  3. settings.gradle 설정
  4. 필요 없는 파일 삭제
  5. build.gradle 수정 (공통 부분 작성)
  6. 포트 번호 설정 (application.yml)
  7. Gateway 모듈 생성
  8. Gateway 라이브러리 추가
  9. gateway 설정 (application.yml)
728x90

하나의 프로젝트 안에 여러 개의 프로젝트가 들어갈 수 있게 멀티 모듈 프로젝트를 생성

 

common, user-api, board-api, gateway가 있는 프로젝트 만들

 

 

멀티 모듈 프로젝트 생성

모듈 생성

프로젝트 우클릭 - New - Module 클릭

 

 

모듈 이름을 입력하고 생성한다.

 

모듈 세 개 추가

 

 


settings.gradle 설정

프로젝트의 settings.gradle에 생성한 모듈들을 추가해준다.

rootProject.name = 'multi'
include 'user-api'
include 'common'
include 'board-api'

 


필요 없는 파일 삭제

 

프로젝트의 src는 사용할 일이 없기 떄문에 src 폴더를 삭제해준다.

 

각각의 모듈에서 필요 없는 파일들은 삭제하고, src 폴더와 build.gradle 파일만 남긴다.

 


build.gradle 수정 (공통 부분 작성)

프로젝트의 build.gradle을 수정한다.

모듈들에서 공통으로 사용하는 라이브러리들을 넣어준다.

 

plugins {
id 'java'
id 'org.springframework.boot' version '3.4.2'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
bootJar.enabled = false
repositories {
mavenCentral()
}
// 공통 설정 부분
subprojects {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'
compileJava {
sourceCompatibility = 17
targetCompatibility = 17
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
compileOnly 'org.projectlombok:lombok:1.18.36'
annotationProcessor('org.projectlombok:lombok')
}
tasks.named('test') {
useJUnitPlatform()
}
}

 

 

 

새로 생성한 모듈들의 build.gradle에서 중복 부분을 제거한다.

group = 'com.example.user'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
}

 

 

만약 board-api에서 common 모듈의 클래스, 메서드, 라이브러리를 사용할 수 있게 하려면

implementation으로 board-api의 build.gradle 파일에 추가해준다.

dependencies {
implementation project(':common')
}

 


포트 번호 설정 (application.yml)

실행할 모듈의 application.yml에 포트 번호 설정을 추가해준다.

// user-api
server:
port: 8081
// board-api
server:
port: 8082

 

 

모듈을 실행하면 각각 설정한 포트에서 실행 중인 걸 확인할 수 있다.

 

 


Gateway 모듈 생성

위에서 모듈을 생성한 것처럼 Gateway 모듈을 생성해준다.

 

Gateway 라이브러리 추가

build.gradle에 라이브러리를 추가해준다.

group = 'com.example.user'
version = '0.0.1-SNAPSHOT'
ext {
set('springCloudVersion', '2024.0.0')
}
dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}")
}
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
}

 


gateway 설정 (application.yml)

server:
port: 8080
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
# /user 로 시작하는 url이면 user-api 연결
- id: user-api
uri: http://localhost:8082
predicates:
- Path=/user/**
# /board 로 시작하는 url이면 board-api 연결
- id: board-api
uri: http://localhost:8081
predicates:
- Path=/board/**

 

 

 

클라이언트는 게이트웨이를 통해서 요청을 보낼 수 있다.

게이트웨이가 요청 url을 보고 url에 맞는 서버로 요청을 보낸다.

 

게이트웨이가 8000 포트로 실행 중일 때,

localhost:8000/board/list 로 요청을 보내면 board-api로 보내진다.

728x90
저작자표시 비영리 변경금지

'BE > Spring Boot' 카테고리의 다른 글

[Spring Boot] Gateway에서 인가 처리 (Filter)  (0) 2025.03.21
[Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정  (0) 2025.03.19
[Spring Boot] Spring Cloud란? / Spring Cloud Gateway  (0) 2025.03.18
[Spring Boot] STOMP란? / 간단한 채팅방 구현  (0) 2025.03.18
[Spring Boot] WebSocket과 Kafka로 실시간 채팅 구현  (0) 2025.03.18
  1. 멀티 모듈 프로젝트 생성
  2. 모듈 생성
  3. settings.gradle 설정
  4. 필요 없는 파일 삭제
  5. build.gradle 수정 (공통 부분 작성)
  6. 포트 번호 설정 (application.yml)
  7. Gateway 모듈 생성
  8. Gateway 라이브러리 추가
  9. gateway 설정 (application.yml)
'BE/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] Gateway에서 인가 처리 (Filter)
  • [Spring Boot] Eureka란? / 스프링 부트에서 Eureka, Gateway 설정
  • [Spring Boot] Spring Cloud란? / Spring Cloud Gateway
  • [Spring Boot] STOMP란? / 간단한 채팅방 구현
셰욘
셰욘
셰욘
seiyeon
셰욘
전체
오늘
어제
  • 분류 전체보기 (174)
    • 알고리즘 (46)
      • 프로그래머스 (2)
      • 백준 (37)
      • 문제 유형 (7)
    • CS (41)
      • Linux (6)
      • DB (15)
      • 자료구조 (3)
      • OOP (2)
      • 아키텍처 (0)
    • BE (42)
      • Java (9)
      • Spring Boot (32)
    • FE (18)
      • Next.js (1)
      • JavaScript (5)
      • Vue.js (7)
      • Web (0)
    • 배포 (5)
    • 회고 (18)
      • BEYOND SW 캠프 (18)
    • 기타 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 관리

공지사항

인기 글

태그

  • js
  • 구현
  • 그리디
  • 리눅스
  • 자료구조
  • 트리
  • bfs
  • DP
  • 백준
  • spring boot
  • Java
  • 프로그래머스
  • vue
  • 주간회고
  • 티스토리챌린지
  • 네트워크
  • 회고
  • 우선순위 큐
  • 실습
  • AWS
  • be
  • web
  • cs
  • Gateway
  • 백트래킹
  • db
  • 오블완
  • dfs
  • fe
  • 알고리즘

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
셰욘
[Spring Boot] 멀티 모듈 프로젝트 생성 / API Gateway 연결
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.