웹 개발

[Eclipse] Spring boot 프로젝트에서 war 파일 만들기

노루아부지 2021. 7. 4. 22:57

SpringBoot에서 war 파일을 만들기 위해서는 @SpringBootApplication에서 SpringBootServletInitializer를 확장해야 합니다. 그 방법은 다음과 같습니다.

 

  1. pom.xml의 packaging을 war로 변경합니다.
    <packaging>war</packaging>​
  2. pom.xml에 아래 dependency를 추가
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>​
  3. @SpringBootApplication 애노테이션이 있는 java 파일에 다음과 같이 SpringBootServletInitializer를 추가합니다.
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    @SpringBootApplication
    public class SpringBootSampleApplication extends SpringBootServletInitializer {
      public static void main(String[] args) {
        SpringApplication.run(SpringBootSampleApplication.class, args);
      }
      
      @Override
      protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringBootSampleApplication.class);
      }
    }
  4. 여기까지 하고 Maven Build ... 를 클릭하면 target 폴더에 war 파일이 생성되어 있습니다.

 

 

그렇다면 왜 SpringBootServletInitializer를 상속해야 하는 걸까요?

예전에는 Web Project에 web.xml이 있었지만 현재는 없습니다. Setvlet 3.0 스팩의 중요한 변경사항 중 하나는 web.xml없이 배포가 가능해진 것입니다.

그리고 Apache Tomcat의 경우 Servlet 3.0 스펙을 7.0부터 지원합니다.

 

Spring Framework는 Servlet 3.0 이상 환경에서 web.xml 대신하여 ServletContext를 프로그래밍적으로 다룰 수 있게 WebApplicationInitializer 인터페이스를 제공합니다.

또한 SpringBootServletInitializer는 WebApplicationInitializer 인터페이스의 구현체입니다.

 

 

 

[참고]

https://stackoverflow.com/questions/47908312/create-war-file-from-springboot-project-in-eclipse

 

Create war file from Spring:boot project in Eclipse

I am pretty new to Spring Boot and I have completed a application that works well on my localhost. As I have been told to deploy it outside my localhost on for example a webbhotel or simular I need...

stackoverflow.com

https://4urdev.tistory.com/84

 

Spring Boot WAR 로 배포하기 (How to deploy with *.war file with Spring Boot)

Spiring Boot 는 기본적으로 jar 배포형태를 가지고 있습니다. 그 말은 그 자체로서 java 실행 프로그램이다 라는 의미로 해석될 수 있다고 생각합니다. tomcat 같은 웹서버도, db 도 다 내장으로 가질 수

4urdev.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

 

728x90
loading