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에서 배포하고 실행하려면 다음 단계를 완료해야합니다.
- Apache Tomcat을 다운로드 하고 tomcat 폴더에 압축을 풉니 다.
- target / spring-boot-tomcat.war 에서 tomcat / webapps / 폴더로 WAR 파일을 복사 합니다.
- 터미널에서 tomcat / bin 폴더로 이동하여 실행합니다.
- catalina.bat 실행 (Windows)
- catalina.sh 실행 (Unix 기반 시스템에서)
- 이동 통해 http : // localhost : 8080 / Spring 부팅 바람둥이 / 안녕하세요
이것은 빠른 Tomcat 설정 입니다. 전체 설정 안내서는 Tomcat 설치 안내서를 확인하십시오 . 또한 Tomcat에 WAR 파일을 배포하는 추가 방법이 있습니다 .
5. 결론
이 짧은 사용방법(예제)에서는 간단한 Spring Boot 애플리케이션을 만들고 Tomcat 서버에 배포 할 수있는 유효한 WAR 애플리케이션으로 전환했습니다.