SpringBootServletInitializer
War vs. Jar 배포상의 차이
@SpringBootApplication
public class SuperApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SuperApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SuperApplication.class);
}
}
보통 SpringBoot 웹 애플리케이션을 배포할 때는 embedded tomcat이 내장된 jar 파일을 이용, 특별한 경우 전통적인 배포 방식인 war 파일로 배포 진행한다.
* 추가 : https://prde.tistory.com/184
상속하는 이유
전통적으로 Spring 웹 애플리케이션을 외부 Tomcat에서 동작하도록 하기 위해 web.xml에 applicationContext를 등록해야한다. Apache Tomcat이(서블릿 컨테이너)이 구동될 때 /WEB-INF 디렉토리에 존재하는 web.xml을 읽어 웹 애플리케이션을 구성하기 때문이다. 근데 web.xml은 WebApplicationInitializer인터페이스를 구현하여 대신할 수 있게 되었고, ServletContext에 Spring IoC 컨테이너를 생성하여 추가할 수 있도록 변경되었다. 이와 비슷하게 SpringBoot 웹 애플리케이션을 외부 Tomcat에서 동작하도록 하기 위해서는 WebApplicationInitializer인터페이스를 구현한 SpringBootSetvletinitializer를 상속하면 된다.
https://serverwizard.tistory.com/165
SpringBootServletInitializer 란 무엇이고 왜 상속받고 있는가?
주제 선정 이유 아래 소스는, 현재 담당하고 있는 서비스의 코드를 그대로 가져온 것이다. @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void main(String[] args) { Spr
serverwizard.tistory.com
Spring Boot 웹 애플리케이션을 WAR로 배포할 때 왜 SpringBootServletInitializer를 상속해야 하는걸까?
Spring Boot로 웹 애플리케이션을 만들고 이를 WAR로 배포할 때에는(Apache Tomcat 같은 Servlet Container에) SpringBootServletInitializer를 상속 하도록 가이드 하고 있다.
medium.com