SW-PRODUCT/개발-Mentor

Spring-boot를 이용해서 war 프로젝트 만들기: Stand-alone도 되고, war 배포도 되는..

굴돌 2015. 2. 2. 18:22

* Jar 패키징 형태의 Stand-alone 만들기 Howto : http://blog.daum.net/rollin/8097077



spring-boot 메인페이지 : http://projects.spring.io/spring-boot/

RESTfull 서비스 starter : http://spring.io/guides/gs/rest-service/
ㄴ jar로 만들어서 stand-alone으로 실행됨


Thymeleaf 기반으로 Jar 및 WAR 기반 프로젝트 가이드 : http://spring.io/guides/gs/convert-jar-to-war-maven/

ㄴ 근데 Thymeleaf가 좀 별로인듯..;;


war로 만들기 가이드 : http://spring.io/guides/gs/convert-jar-to-war/

ㄴ 내용은 별로 없고, spring-boot 레퍼런스의 war 만들기 위치로 링크 제공.


레퍼런스의 maven으로 war 만들기 가이드 : http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging


Maven 기준으로 보면,

- type을 war로 지정하고,

- spring-boot-start-tomcat을 provided로만 바꿔주고,

- SpringBootServletInitializer를 상속하는 클래스를 하나 만들어줘야 한다.


public class WebInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}


특이한것은  만들어진 war를 까봐도 web.xml은 없다.

Servlet 3.0부터 @WebServlet 어노테이션이 추가되면서 web.xml을 대체할 수 있다고 되어 있는데 딱히 나는 @WebServlet을 사용한적도 없다. spring이 만들어 심어둔것이 있을거라 추정되긴 하지만...못찾겠다.

특이한건 servlet container가 이걸 어떻게 찾는가 하는거다... 어떠한 힌트도 적어준 적이 없다...


@WebServlet 관련 링크들.

- Java EE 6 Tutorial > Creating and Initializing a Servlet

- http://blog.caucho.com/2009/10/06/servlet-30-tutorial-weblistener-webservlet-webfilter-and-webinitparam/

- http://www.codejava.net/java-ee/servlet/quick-start-guide-for-java-servlet-annotations

- https://blogs.oracle.com/swchan/entry/servlet_3_0_annotations



어쩄든... jar와 war 둘 다 가능한 방식으로 spring-boot로 프로젝트 간단히 생성해두면

간단한 웹서비스는 뚝딱 만들기 좋다.

로컬에서는 stand-alone으로 테스트하고

서비스는 war 형태로 클라우드에 올리고..