본문 바로가기
개발/SpringBoot

SpringBoot 외장Tomcat과 SpringBootServletInitializer

by 궁즉변 변즉통 통즉구 2021. 12. 9.
반응형

SpringBoot를 사용하면 일반적으로 내장Tomcat을 사용한 jar로 배포를 한다.

가끔 상황에 따라서 외장Tomcat으로 war형태로 배포를 진행해야하는 경우가 있는데 이때 SpringBootServletInitializer가 필요하다.

@SpringBootApplication
public class Application extends SpringBootServletInitializer {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}
}

 

외장Tomcat을 사용해서 어플리케이션 실행 시 전통적으로 web.xml 파일을 읽어서 실행을 한다. 그러나 Servlet 3.0부터는 web.xml이 없이 WebApplicationInitializer 인터페이스를 구현해서 대신 할 수 있게됐다.

그리고 SpringBoot에서는 외장Tomcat 사용 시 WebApplicationInitializer를 구현한 SpringBootServletInitializer를 상속 받아서 처리하게 된다.

 

추가적으로 외장Tomcat으로 어플리케이션을 실행 시 spring-boot-starter-tomcat 의존성 설정을 provided로 변경이 필요한다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>
  
 <!-- JSP -->
 <dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

 

packaging 설정도 jar -> war로 변경해준다.

<packaging>war</packaging>

 

위와 같이 적용 후 war로 빌드 후 외장 Tomcat으로 배포를 진행하면 된다.

반응형

댓글