1. 소개

Spring Boot Spring 프로젝트의 프로덕션 준비 설정을 설정할 수있는 구성 프레임 워크에 대한 규칙 이며 Tomcat 은 가장 인기있는 Java Servlet 컨테이너 중 하나입니다.

기본적으로 Spring Boot는 데스크톱 애플리케이션으로 실행되거나 시스템 서비스로 구성 될 수있는 독립형 Java 애플리케이션을 빌드하지만 새 서비스를 설치하거나 애플리케이션을 수동으로 실행할 수없는 환경이 있습니다.

독립 실행 형 응용 프로그램과 반대로 Tomcat은 동일한 응용 프로그램 프로세스 내에서 여러 응용 프로그램을 관리 할 수있는 서비스로 설치되므로 각 응용 프로그램에 대한 특정 설정이 필요하지 않습니다.

이 사용방법(예제)에서는 간단한 Spring Boot 애플리케이션을 만들고 Tomcat 내에서 작동하도록 조정합니다.

2. 스프링 부트 애플리케이션 설정

사용 가능한 시작 템플릿 중 하나를 사용하여 간단한 Spring Boot 웹 애플리케이션을 설정합니다.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>2.4.0</version> 
    <relativePath/> 
</parent> 
<dependencies>
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
</dependencies>

Spring Boot가 기본 설정을 처리하므로 표준 @SpringBootApplication 이외의 추가 구성이 필요하지 않습니다 .

간단한 REST EndPoint를 추가하여 유효한 콘텐츠를 반환합니다.

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection<String> sayHello() {
        return IntStream.range(0, 10)
          .mapToObj(i -> "Hello number " + i)
          .collect(Collectors.toList());
    }
}

이제 mvn spring-boot : run으로 애플리케이션을 실행 하고 http : // localhost : 8080 / hello 에서 브라우저를 시작 하여 결과를 확인 하겠습니다 .

3. 스프링 부트 WAR 생성

서블릿 컨테이너는 애플리케이션이 배포 될 일부 계약을 충족 할 것으로 예상합니다. Tomcat의 경우 계약은 Servlet API 3.0 입니다.

애플리케이션이이 계약을 충족 시키려면 소스 코드를 약간 수정해야합니다.

먼저 JAR 대신 WAR 애플리케이션을 패키징해야합니다. 이를 위해 다음 내용으로 pom.xml변경 합니다.

<packaging>war</packaging>

이제 버전 번호를 포함하지 않도록 최종 WAR 파일 이름을 수정 해 보겠습니다 .

<build>
    <finalName>${artifactId}</finalName>
    ... 
</build>

그런 다음 Tomcat 의존성을 추가합니다.

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
</dependency>

마지막으로 SpringBootServletInitializer 인터페이스 를 구현하여 Tomcat에 필요한 Servlet 컨텍스트를 초기화합니다 .

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

Tomcat 배포 가능한 WAR 애플리케이션을 빌드하기 위해 mvn clean 패키지를 실행 합니다.  그 후, 우리의 WAR 파일은 target / spring-boot-tomcat.war 에서 생성됩니다 (Maven artifactId 가“spring-boot-tomcat” 이라고 가정 ).

이 새로운 설정으로 인해 Spring Boot 애플리케이션이 비 독립형 애플리케이션이된다는 점을 고려해야합니다 (독립형 모드에서 다시 작동  하도록하려면 tomcat 의존성에서 제공된 범위를 제거하십시오  ).

4. Tomcat에 WAR 배포

WAR 파일을 Tomcat에서 배포하고 실행하려면 다음 단계를 완료해야합니다.

  1. Apache Tomcat을 다운로드 하고 tomcat 폴더에 압축을 풉니 다.
  2. target / spring-boot-tomcat.war 에서  tomcat / webapps / 폴더로 WAR 파일을 복사 합니다.
  3. 터미널에서 tomcat / bin 폴더로 이동하여 실행합니다.
    1. catalina.bat 실행 (Windows)
    2. catalina.sh 실행 (Unix 기반 시스템에서)
  4. 이동 통해 http : // localhost : 8080 / Spring 부팅 바람둥이 / 안녕하세요

이것은 빠른 Tomcat 설정 입니다. 전체 설정 안내서는 Tomcat 설치 안내서를 확인하십시오 . 또한 Tomcat에 WAR 파일을 배포하는 추가 방법이 있습니다 .

 5. 결론

이 짧은 사용방법(예제)에서는 간단한 Spring Boot 애플리케이션을 만들고 Tomcat 서버에 배포 할 수있는 유효한 WAR 애플리케이션으로 전환했습니다.

항상 그렇듯이 예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다 .