Back-end/Spring-핵심& webMVC

SpringBootServletInitializer

prden 2022. 12. 10. 19:15

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

https://medium.com/@SlackBeck/spring-boot-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-war%EB%A1%9C-%EB%B0%B0%ED%8F%AC%ED%95%A0-%EB%95%8C-%EC%99%9C-springbootservletinitializer%EB%A5%BC-%EC%83%81%EC%86%8D%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B1%B8%EA%B9%8C-a07b6fdfbbde

 

Spring Boot 웹 애플리케이션을 WAR로 배포할 때 왜 SpringBootServletInitializer를 상속해야 하는걸까?

Spring Boot로 웹 애플리케이션을 만들고 이를 WAR로 배포할 때에는(Apache Tomcat 같은 Servlet Container에) SpringBootServletInitializer를 상속 하도록 가이드 하고 있다.

medium.com