SpringBootServletInitializer는 왜 사용하는것일까?

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