스프링부트 war 프로젝트 생성시 SpringBootServletInitializer를 상속받는 ServletInitializer 클래스 파일이 생성된다.
해당 파일의 용도는 무엇일까?
스프링 부트 웹 애플리케이션을 배포할 때 jar를 이용하기도 하지만, 전통적인 방식인 war 파일로 배포하는 경우가 있다.
이때 SpringBootServletInitializer를 상속받아 배포하게 된다.
스프링 웹 애플리케이션이 Tomcat에서 동작되기 위해서는 Web.xml에 ApplicationContext 등록해줘야한다.
Apache Tomcat이 구동될때 web.xml을 읽어 웹 애플리케이션을 구성하기 때문이다.
Servlet 3.0으로 스펙이 업데이트 되면서 web.xml 설정을 WebApplicationInitializer 인터페이스를 구현하여 대신 할 수 있게 되었고 이를 구현한 SpringBootServletInitializer를 상속받아 외부 Tomcat에서 스프링부트가 실행되도록 해준다.
SpringBootServletInitializer를 상속 받는 다는 것은 tomcat 같은 Servlet Container 환경에서Spring Boot 애플리케이션 동작 가능 하도록 웹 애플리케이션 컨텍스트를 구성한다는 의미.