프레임워크(Framework)/Spring

[Spring Boot] 스프링 부트 웹 서버 톰캣(Tomcat)에서 제티(Jetty)로 변경하기

잇트루 2023. 5. 19. 20:27
반응형

Intro

스프링 부트에는 톰캣(Tomcat) 서버가 내장되어 있어 별다른 설치 과정 없이 Tomcat을 통해 실행된다.

하지만, 톰캣이 아닌 다른 서버를 통해 프로젝트를 실행할 수도 있다.

 

 

Jetty

Jetty는 이클립스 재단의 HTTP 서버이자 자바 서블릿 컨테이너이다.

Jetty도 톰캣(Tomcat)과 같이 자바 서블릿 컨테이너이자 서버로 사용할 수 있기 때문에 개발자는 원하는 서버를 선택하여 프로젝트를 구성할 수 있다.

 

Jetty의 특징

  • 2009년 이클립스 재단으로 이전하면서 오픈소스 프로젝트로 개발되었다.
  • Jetty는 다른 웹 애플리케이션에 비해 적은 메모리를 사용하여 가볍고 빠르다.
  • 애플리케이션에 내장 가능하다.
  • 경량 웹 애플리케이션으로 소형 장비, 소규모 프로그램에 더 적합하다.

 

 

스프링 부트의 서버 Jetty로 변경하기

스프링 부트로 프로젝트를 생성하여 별다른 설정을 하지 않으면 해당 프로젝트는 스프링 부트의 기본 내장 서버인 톰캣(Tomcat)으로 실행된다.

 

스프링 부트 프로젝트 우측의 Gradle에서 Dependencies 하위 목록을 살피면 Tomcat이 포함되어 있는 것을 확인할 수 있다.

이를 제외하고 Jetty를 추가하여 프로젝트의 내장 서버를 변경할 수 있다.

 

톰캣 서버 제외하기

프로젝트의 build.gradle 파일에서 spring-boot-starter-web 의존성이 추가되어 있는 부분에서 톰캣을 제외시킨다.

dependencies {
    ...

    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude module: 'spring-boot-starter-tomcat'
    }

    ...
}

 

톰캣을 제외한 이후 프로젝트를 리로드(reload)하여 의존성 부분이 제거되었는지 확인한다.

위 이미지와 같이 spring-boot-starter-web 하위 모듈에 톰캣이 사라지면 잘 적용된 것이다.

 

Jetty 서버 추가하기

톰캣 서버가 제외된 것을 확인한 후, build.gradle 파일에서 Jetty에 대한 의존성을 추가한다.

dependencies {
    ...

    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude module: 'spring-boot-starter-tomcat'
    }

    // 추가
    implementation ('org.springframework.boot:spring-boot-starter-jetty')

    ...
}

 

Jetty에 대한 의존성을 추가한 후 프로젝트를 리로드(reload)하여 Jetty 의존성이 추가되었는지 확인한다.

 

프로젝트 실행

이후 연결이 잘 되었는지 확인하기 위해 스프링 부트 프로젝트를 실행한다.

아래 이미지는 스프링 부트의 기본 내장 서버인 톰캣(Tomcat)에서 Jetty로 변경하여 실행된 모습이다.

웹 서버는 Tomcat과 Jetty뿐만 아니라 Netty, Undertow 등 다양한 서버가 존재한다.

다른 서버 또한 변경하고 싶다면 Tomcat의 의존성을 제거하고 원하는 서버의 의존성을 추가하여 연결할 수 있다.

반응형