Spring mvc 에서 web.xml 이 가지는 의미

2017-02-17 11:32

안녕하세요~ 일전에 패스트캠퍼스에서 자바강의를 들었던 학생(?)입니다ㅎㅎ 웹으로 전직해서 강사님 강의했던 내용들이 많이 도움이 되고 있습니다^^

다름이 아니라 아주 기초적인 질문을 좀 드리고자 글을 남기게 되었습니다.

기존 Spring mvc 프로젝트를 보면 web.xml 을 포함하여 무수한 .xml 파일들이 있는데요. 아직 JAVA 쪽을 잘 몰라서 제 기준에서는 단순히 .xml 이 설정하는데 번거롭다 싶어, 제가 하는 Spring mvc 프로젝트에는(SpringBoot 는 아닙니다.) 해당 내용들을 클래스에 담았습니다. MyBatis 를 써야 하는데 이것도 Mapper 를 Interface 에 어노테이션으로 쿼리를 담았구요.

그런데 해당 프로젝트를 보신 다른 분이 JAVA 표준이 web.xml 부터있는데 없다고 당황하시더라구요. 저런 설정들을 .xml 로 빼는 것과 클래스에 정의하는 것의 차이는 어떻게 되는걸까요??

좀 정리가 안되는 질문 같으나;; 대략적으로나마 의견을 듣고 싶습니다.

6개의 의견 from SLiPP

2017-02-17 18:30

서블릿 초기 표준에 web.xml이 필요한 것은 맞습니다. 하지만 서블릿도 버전업(정확한 버전이 기억나지는 않지만 서블릿 3.0 버전부터일 겁니다.) 되면서 web.xml 없이 프로그래밍해도 문제가 되지 않습니다. 최근 트렌드는 오히려 web.xml을 없애는 경향이 강한 듯 해요. web.xml에 설정하는 것이 반드시 필수는 아니니 너무 걱정하지 않으셔도 좋을 것 같아요. 또한 .xml을 사용하는 것과 클래스의 애노테이션으로 설정하는 것의 차이는 없습니다. 단순히 취향의 차이입니다.

Spring MVC without web.xml using WebApplicationInitializer 문서 참고하면 좋겠네요.

2017-02-20 08:56

답변 너무 감사드립니다ㅠ

언뜻 듣기론 배포하고나서 .xml 의 설정만 바꾸어주면 앱을 리빌드할 필요가 없어 코드보다는 .xml 로 해야된다. 라는 의견도 있더라구요. 운영방식의 차이일거라고 보는데... 저런 설정부분은 .properties 같은 파일로 빼서 관리하면 되지 않나 라는 생각도 해보았습니다.

당장은 해당 문제에 대하여 변경할수 없는 상황이라 팀원들 얘기하는데로 가는데, 후에 제가 주도적으로 진행할 시기가 되면 팀원들을 어떻게 잘 설명을 해야하나 고민해보게 되네요; 우선 링크주신 문서부터 잘 읽어보겠습니다^^

2017-02-20 08:58

참 그리고 제가 여기 사이트에 회원가입을 일반 email 로 했는데요/ 메일주소로 임시 비번이 온다고 하였는데, 오지 않더라구요. (네이버메일 이었구요. 스펨에도 없드라구요.) 구글연동으로 해서 다시 회원가입하여 댓글 남겼습니다~

2017-02-24 21:26

web.xml은 DeploymentDescriptor(배포서술자)의 구현체입니다.

그래서 웹어플리케이션을 WAR파일로 패키징 한 후에 배포할 때 서블릿 매핑, 이벤트리스너, 웰컴파일리스트(시작페이지지정 ex) index.jsp, default.jsp)와 같은 설정들이 포함되어 있고

WEB-INF 폴더 하위에 위치하게 됩니다.

서블릿 3.0 부터는 어노테이션을 지원하게 되면서, 더 이상 서블릿이나 필터를 사용하기 위해서 web.xml에 기술하지 않아도 가능하게 되었습니다. 컨트롤러를 선언할 때 @Controller 어노테이션을 사용하는 것처럼 서블릿을 사용할 때 @WebServlet 어노테이션을 사용하면 됩니다.

javaConfig 기반의 스프링 설정은 팀원 중에 부담스러워하는 사람이 있다면, xml과 병행해서 사용하면 됩니다. @Configuration @ImportResource({"xmlContext설정.xml"}) public class AppConfig{}

와 같이 병행해서 사용할 수 있습니다.

의견 추가하기

연관태그

← 목록으로