Search

web.xml

web.xml이란?
web.xml 파일은 웹 어플리케이션의 배포 설명자로, 각 어플리케이션의 환경을 설정하는 역할을 한다. 서버가 처음 로딩될 때 읽어들이고, 해당 환경설정에 대해 tomcat에 적용하여 서버를 시작한다. 브라우저가 Java Servlet에 접근하기 위해 WAS(TOMCAT)에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할수있으며, 이것을 정하는곳이 web.xml이다.
web.xml이 대체된 후
스프링 부트 웹 애플리케이션을 배포할 때 JAR을 이용하기도 하지만, 전통적인 방식으로 WAR로 배포를 하기도 한다. 이 때, 프로젝트의 구조는 다음과 같이 이루어진다.
src/main/java : 클래스, 인터페이스 등 자바 파일이 저장되는 곳.
src/main/resources : html, css, js, image, 설정파일 등이 저장되는 곳.
src/test/java : 테스트코드가 저장되는 곳.
build.gradle : gradle 설정 파일
1.
src/main/java
WAR프로젝트 생성 시, SpringBootServletInitializer를 상속받는 ServletInitializer 클래스 파일이 생성된다. WAR 파일로 배포를 진행할 때 SpringBootServlerInitializer를 상속받아 배포하게 된다.
Servlet3.0 전엔 Tomcat같은 Servlet Container 환경에서 스프링 웹 애플리케이션이 동작하기 위해서는 web.xml을 이용해 ApplicationContext를 등록해줘야 했다.
<!-- Web.xml --> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
XML
복사
Servlet 3.0으로 스펙이 업데이트 되면서 WAR에서는 이 web.xml설정을 WebApplicationInitializer 인터페이스를 구현하여 대신 할 수 있게 되었고, 이를 구현한 SpringBootServletInitializer를 상속받아 외부 Tomcat에서 스프링부트가 실행되도록 해준다.
따라서, WAR파일로 빌드하고 배포하지 않을것이라면 SpringBootServletInitializer를 상속 할 필요 또한 없다는 것이다.
프로젝트를 생성하면 @SpringBootApplciation 어노테이션을 사용하는 프로젝트명+Application의 이름의 프로젝트가 동작할 수 있게 해주는 메인 클래스가 있다.
@SpringBootApplication public class SpringAopApplication { public static void main(String[] args) { SpringApplication.run(SpringAopApplication.class, args); } }
Java
복사
@SpringBootApplication public class SpringAopApplication { public static void main(String[] args) { SpringApplication.run(SpringAopApplication.class, args); } }
Java
복사
@SpringBootApplication 어노테이션은 @ComponentScan, @Configuration, @EnableAutoConfiguration을 함께 사용한것과 같다.
b.
src/main/resources
templates 폴더, static 폴더, application.properties 파일이 기본적으로 생성된다.
기존의 스프링은 HTML 내에 자바 코드를 삽입하는 방식의 JSP를 사용했다. 디렉터리의 위치도 웹 디렉터리에 해당하는 src/main/webapp 안에 존재했다. 그러나 이 방식은 war 파일로 패키지화되었을 경우, 또는 application.properties에 view의 위치를 설정하였을때만 작동한다.
application.properties 파일은 웹 애플리케이션을 실행하면서 자동으로 로딩되는 파일이며, 스프링 부트 전체 프로젝트의 설정을 저장하는 곳이다.
이 파일에 설정되어져 있는 정보를 최우선적으로 따르며, 자바 파일에 설정되어져 있어도 이 application.properties 파일에 다른 설정이 저장되어져 있으면 의미가 없다
톰캣과 같은 WAS설정(포트 번호, 콘텍스트 패스 등)이나, 데이터베이스 관련 정보 등 각각으로 분리되어 있는 XML 또는 자바 기반의 설정을 해당 파일에 Key-Value 형식으로 지정해서 처리할 수 있다.
c.
src/test/java
테스트코드가 저장되는 곳. 복잡한 설정없이 바로 테스트가 가능하다.
d.
build.gradle
파일 프로젝트 빌드 도구인 Gradle의 설정파일이다.