프로그래밍 공부
Spring Boot - 임베디드 서버 본문
🚀 Spring Boot - 임베디드 서버(Embedded Server)
Spring Boot는 내장 웹 서버(Embedded Server)를 제공하여 별도의 WAS(Web Application Server) 설치 없이 실행할 수 있다.
기본적으로 Tomcat이 내장되어 있지만, Jetty나 Undertow로 변경할 수도 있다!
1️⃣ 임베디드 서버란?
내장형(Embedded) 웹 서버란 애플리케이션 내부에 포함된 웹 서버로, 별도로 설치하지 않아도 Spring Boot 애플리케이션과 함께 실행되는 서버.
✅ 기존 Spring MVC
- Tomcat, JBoss 등의 WAS를 설치하고 프로젝트를 배포(WAR)해야 했음
- 서버 설정이 필요하고 배포 과정이 복잡했음
✅ Spring Boot
- Tomcat, Jetty, Undertow가 애플리케이션 내부에 포함됨
- java -jar 명령어만으로 실행 가능
- 배포가 간편하고, 마이크로서비스(MSA)와 클라우드 환경에서 유리함
2️⃣ Spring Boot의 기본 내장 서버 - Tomcat
Spring Boot는 기본적으로 Apache Tomcat(톰캣)을 내장 서버로 사용.
📌 기본 포트: 8080
🛠 실행하면 내장 서버가 자동 실행됨
./gradlew bootRun # Gradle
mvn spring-boot:run # Maven
java -jar myapp.jar # 실행 가능한 JAR 배포
📌 실행 후 브라우저에서 http://localhost:8080으로 접근하면 서버가 동작 중인 걸 확인할 수 있다.
3️⃣ 임베디드 서버 변경하는 방법
🔹 1. 포트 변경하기
Spring Boot의 기본 포트 8080을 다른 포트로 변경하려면,
src/main/resources/application.properties에서 설정.
server.port=9090
👉 이제 **[http://localhost:9090에서](http://localhost:9090%EC%97%90%EC%84%9C/) 서버가 실행됨.
🔹 2. 내장 서버를 Jetty로 변경하기
Spring Boot는 기본적으로 Tomcat을 사용하지만, Jetty나 Undertow로 변경할 수도 있다.
✅ Tomcat 제거 후 Jetty 추가 (Gradle 예시)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jetty' // Jetty 추가
implementation 'org.springframework.boot:spring-boot-starter-tomcat' // Tomcat 제거
}
👉 Jetty 서버가 내장 서버로 실행됨.
✅ Maven 사용 시
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
👉 mvn spring-boot:run 하면 Jetty가 실행됨.
🔹 3. 내장 서버 비활성화하기
Spring Boot 애플리케이션에서 내장 서버를 끄고, 외부 Tomcat이나 다른 WAS에 배포할 수도 있다.
✅ 방법 1: application.properties에서 설정
spring.main.web-application-type=none
✅ 방법 2: SpringBootApplication에서 설정
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(MyApplication.class)
.web(WebApplicationType.NONE) // 내장 서버 비활성화
.run(args);
}
}
4️⃣ 내장 서버 사용의 장점
✅ 1. WAS 설치 없이 실행 가능
- 기존처럼 Tomcat, Jetty 등의 WAS를 따로 설치할 필요 없음
- 단순히 java -jar myapp.jar 명령어로 실행 가능
✅ 2. 배포가 간편함
- WAR 파일이 아닌 JAR 파일로 패키징하여 배포할 수 있음
- CI/CD 환경에서도 간단하게 배포 가능
✅ 3. 독립 실행형 애플리케이션
- Spring Boot 애플리케이션이 자체적으로 서버 역할을 할 수 있어서 마이크로서비스(MSA)에 적합
✅ 4. 클라우드 및 컨테이너 환경에서 유리함
- Docker, Kubernetes 환경에서 가볍게 실행 가능
- 클라우드 플랫폼(AWS, GCP 등)과 쉽게 연동 가능
🎯 정리
✔ Spring Boot는 기본적으로 내장 서버(Embedded Tomcat)를 사용함
✔ 기본 포트는 8080이며, 변경 가능 (server.port=9090)
✔ Jetty, Undertow로 변경 가능 (Tomcat 제거 후 변경)
✔ 내장 서버를 비활성화하고 외부 WAS로 배포 가능
✔ 배포 및 실행이 간편하고, 마이크로서비스 및 클라우드 환경에서 유리함
🚀 Spring Boot의 내장 서버 덕분에 빠르게 개발 & 배포할 수 있다! 🔥
'Programming > Spring' 카테고리의 다른 글
Spring Boot, Spring MVC, Spring Framework 비교와 이해 (0) | 2025.02.11 |
---|---|
Spring Boot - Actuator (0) | 2025.02.11 |
Spring Boot Properties - Profile, ConfigurationProperties (1) | 2025.02.11 |
Spring Boot를 사용하여 Hello World API 빌드하기 (0) | 2025.02.11 |
Spring Boot를 사용하는 이유와 스프링 프레임워크와의 차이 (0) | 2025.02.11 |