스프링의 목적은 웹이 아니다.
위에 보이는 것처럼 스프링 웹은 스프링의 기능 중 하나일 뿐이다.
스프링 MVC 프로젝트를 생성하면, 자바 영역(POJO)과 웹 영역을 연동해서 프로젝트를 구동하게 된다.
웹 영역이 MVC설정을 포함하고 있다.
스프링 MVC 이전까지는 Servlet/JSP API를 이용했다. HttpServletRequest/Response 같은 클래스를 이용해서 브라우저와 서버 간 데이터를 주고 받았다. 이런 부분을 내부적으로 처리하고, 개발자는 자바 코드로 개발에만 몰두할 수 있도록 하자는 생각에서 탄생한 것이 스프링 MVC다.
모든 요청은 DispatcherServlet(web.xml)으로 들어온다.
HandlerMapping은 쉽게 말해서 @RequestMapping이 적용된 것을 보고 어떤 컨트롤러로 가야 하는지 찾는 것이다.
Controller는 실제 요청에 대한 처리를 진행한다.
View로 보내기 전, View Resolver는 어떤 view를 통해서 처리할 것인지 해석한다. servlet-context.xml에 정의되어 있다.
웹은 기본적으로 3티어 방식으로 구성된다. 스프링MVC도 마찬가지다.
스프링 MVC가 담당하는 영역이다. 실질적으로 사용자가 보는 화면을 구성한다. CS(client-server)로 구성하지만, 앱으로 제작할 수도 있다.
스프링코어의 영역이다. 요청을 처리하는 로직을 담당한다. 보통 Service라는 이름으로 만든다.
데이터 계층 혹은 영속 계층이라고 한다. 데이터를 어떻게 보관하고 사용할 것인지를 설계한다.
Controller
Service
DAO, Repository
VO, DTO