on
스프링 MVC 구성
스프링 MVC 구성
728x90
반응형
스프링 MVC 구성
스프링 구동 시 읽는 XML은 web.xml, root-context.xml, servlet-context.xml파일임 이 파일 중 web.xml은 Tomcat 구동과 관련된 설정, 나머지 두 파일은 스프링과 관련된 설정임 web.xml상단에 root-context.xml의 경로가 설정되어 있고 에는 스프링 MVC의 ContextLoaderListener가 등록되어 있음 ContextLoaderListener는 해당 웹 애플리케이션 구동 시 같이 동작하므로 프로젝트 실행 시 가장 먼저 로그를 출력하면서 기록함
root-context.xml이 처리되면 그안에 있는 빈(Bean)설정들이 동작하게 됨 root-context.xml에 정의된 객체(Bean)들은 스프링의 영역(context)안에 생성되고 객체들 간의 의존성이 처리됨 root-context.xml이 처리된 후에는 스프링 MVC에서 사용하는 DispatcherServlet이라는 서블릿과 관련된 설정이 동작함
org.springframework.web.servlet.DispatcherServlet 클래스는 스프링 MVC의 구조에서 가장 핵심적인 역할을 하는 클래스임 내부적으로 웹 관련 처리의 준비작업을 진행하는데 이 때 사용하는 파일이 servlet-context.xml임 프로젝트가 실행될 때 로그를 보면 DispatcherServlet에서 XmlWebApplicationContext를 이용해서 servlet-context.xml을 로딩하고 해석하기 시작함 이 과정에서 등록된 객체(Bean)들은 기존에 만들어진 객체(Bean)들과 같이 연동되게 됨
스프링 MVC의 기본 사상
Java를 이용하는 웹 애플리케이션을 제작해 본적이 있다면 보통 Servlet/JSP 기술을 활용해서 제작하는 방식을 먼저 배우고 그 이후 모델2라는 방식에 대해서 학습하는데, 스프링 MVC의 경우 이러한 부분은 개발자들에게 보여주지 않고, 개발자들은 자신이 필요한 부분만을 집중해서 개발할 수 있는 구조로 만들어져 있음 웹 프로그래밍에서 가장 익숙한 단어들 중 하나인 Request/Response.. Servlet/JSP에서는 HttpServletRequest/HttpServletResponse라는 타입의 객체를 이용해 브라우저에게 전송한 정보를 처리하는 방식임 스프링 MVC의 경우 이 위에 하나의 계층을 더한 형태가 되는데 스프링 MVC는 개발자들이 직접 HttpServletRequest/HttpServletResponse 등과 같이 Servlet/JSP의 API를 사용할 필요성이 현저하게 줄어듬 스프링은 중간에 연결 역할을 하기 때문에 이러한 코드를 작성하지 않고도 원하는 기능을 구현할 수 있게 됨
개발자의 코드는 스프링 MVC에서 동작하기 때문에 과거에는 스프링 MVC의 특정한 클래스를 상속하거나 인터페이스를 구현하는 형태로 개발할 수 있었지만, 스프링 2.5버전부터 등장한 어노테이션 방식으로 인해 최근 개발에는 어노테이션이나 XML 등의 설정만으로 개발이 가능하게 되었음
(스프링 MVC 역시 내부적으로는 Servlet API를 활용함)
스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있음
HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현
다양한 타입의 parameter 처리, 다양한 타입의 return 타입 사용 가능
GET, POST방식 등 전송방식에 대한 처리를 어노테이션으로 처리 가능
상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능
다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 각 어노테이션의 의미에 대해서 주의해 가며 학습해야 함
샘플 프로젝트 작성 후 com.ex.controller이라는 패키지 작성 후 거기에 sampleController 클래스 작성 후
@Controller라는 어노테이션을 적용 시 자동으로 스프링의 객체(Bean)으로 등록되는데 servlet-context.xml에 그 이유가 있음 servlet-context.xml 하단부분에 context:component-scan base-package="com.ex.controller"라고 되어 있고 이는 context:component-scan이라는 태그를 이용해서 지정된 패키지를 scan하라는 의미, 해당 패키지에 선언된 클래스들을 scan하면서 스프링에서 객체(Bean)설정에 사용되는 어노테이션들을 가진 클래스들을 파악하고 필요하면 이를 객체로 생성해서 관리하게 됨 SampleController 클래스가 스프링에서 관리되면 아래 이미지와 같이 클래스옆에 작게 's'모양의 아이콘이 추가됨
클래스 선언부에는 @Controller와 함께 @RequestMapping을 많이 사용함 @RequestMapping은 현재 클래스의 모든 메서드들의 기본적인 URL 경로가 됨
예를 들어 SampleController 클래스를 아래와 같이 "/sample/*" 이라는 경로로 지정했다면 /sample/aaa, /sample/bbb과 같은 URL은 모두 SampleController에서 처리됨
출처 :코드로 배우는 스프링 웹 프로젝트(개정판)
728x90
from http://devlsy.tistory.com/90 by ccl(A) rewrite - 2021-11-06 19:02:00