2022. 1. 3. 16:37ㆍ프로그래밍 언어/JAVA
SpringBootServletInitializer는 왜 사용하는것일까?
요약
사용이유 : war 확장자로 배포할 경우 사용
@SpringBootApplication
public class HomepageApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(HomepageApplication.class, args);
}
}
| Spring Initializr로 프로젝트를 생성하면 기본적으로 'extends SpringBootServletInitializer'를 상속받지 않은 채로 프로젝트가 생성이 된다. 하지만 war 파일로 압축하여 배포를 할 경우 'SpringBootServletInitializer'를 상속 받아야 하는데
SpringBootServletInitializer가 무엇이길래 war로 배포할 경우 상속받는걸까?
web.xml을 기억하시나요?
2016년쯤 학생때 개발한 프로젝트에서는 web.xml에 WebApplicationContext를 구성했는데 servlet을 구성할 때 사용했었습니다. 이러한 작업은 Spring을 Servlet Container에서 동작하도록 설정하는것인데 Spring Boot에서는 이런 web.xml은 Spring Initalizr로 생성할 때 기본적으로 포함되어있지 않습니다.
Servlet 3.0 이상부터는 web.xml이 없이 배포가 가능합니다.
| Servlet 3.0 이상부터는 ServletContext를 프로그래밍적으로 다룰 수 있게 WebApplicationInitializer 인터페이스를 제공하며, SpringBootServletInitializer는 WebApplicationInitializer의 구현체입니다.
Spring Web MVC 버전 몇부터 사용 가능할까?
Spring MVC 4부터는 Servlet 3.0+ 환경에 초점을 맞추었습니다.
p.s 정확하게는 Spring Web MVC 3.2.18 버전부터 Servlet 3.0이 사용되었습니다.
https://mvnrepository.com/artifact/org.springframework/spring-webmvc/3.2.18.RELEASE
.jar로 배포할 경우 SpringBootServletInitializer를 상속받지 않아도 됩니다.
| Spring Boot Starter Web을 추가하면 tomcat이 내장되어 있습니다.
내장 tomcat이 있기 때문에 .jar로 배포할 경우 굳이 상속받지 않아도 됩니다.
참고자료
t.ly/INQE
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JAVA Annotation(어노테이션) (0) | 2018.11.05 |
---|---|
JAVA Singleton(싱글톤) (0) | 2018.11.05 |