본문 바로가기

Spring

스프링 MVC 기본구조

Spring의 모듈

  • Spring-beans : 스프링 컨테이너를 이용해 객체를 생성하는 기능

  • Spring-context : 객체생성, 라이프사이클, 스키마 확장등의 기능

  • Spring-aop : AOP기능을 제공

  • Spring-web : REST 클라이언트 데이터 변환처리 및 서블릿 필드, 파일 업로드 지원등 웹개발에 필요한 기능을 제공

  • Spring-webmvc : 스프링 기반의 MVC프레임워크, 웹 애플리케이션을 개발하는데 필요한 Controller, View 구현을 제공

  • Spring-websocket : 스프링 MVC에서 웹소켓 연동을 제공

  • Spring-oxm : xml과 자바 객체간의 맵핑을 처리하기 위한 API 제공

  • Spring-tx : 트랜잭션 처리를 위한 레이어 제공

  • Spring-jdbc : JDBC 프로그래밍을 쉽게 할 수 있는 템플릿 제공

  • Spring-orm : 하이버네이트, JPA, MyBatis 등과 연동 제공

  • Spring-jms : jms서버와 메세지를 주고받을 수 있는 기능

  • Spring-context-support : 스케줄링, 메일, 캐시연동, 벨로시티등 부가기능 제공

 

스프링 MVC 프로젝트의 내부구조

MVC를 사용한다는 의미는 root-context.xml로 사용하는 일반 java영역(pojo)과 servlet-context.xml로 설정하는 web영역을 같이 연동하여 구동합니다.

  • root-context : 비지니스 로직처리를 위한 객체 를 설정해주며 service, dao 등 mybatis 설정 및 sql DB 접근에 관한 것을 제어합니다.

  • servlet-context : jsp 화면 view에 관한 객체를 설정합니다. controller, 파일업로드, intecptor(로그인) 처리등 URI에 관련된 설정을 하며 Web app에서 클라이언트의 요청을 받기 위한 제어설정 역할을 합니다.

 

스프링 MVC 프로젝트 로딩구조

web.xml

root-context

 

servlet-context

  1. 서버 구동시 web.xml 내에 등록된 속성들 확인

  2. 먼저 실행되는 web.xml의 contextLoaderListener 설정

  3. root-context.xml의 정의된 리소스를 확인하고 객체(bean) 설정들이 동작한다. (console 창 info를 통해 확인 가능)

  4. 객체(bean)들은 스프링영역에 생성되고 객체들간의 의존성 처리

  5. servlet.xml의 DispatcherServlet이란 설정이 동작

  6. DispatcherServlet클래스는 스프링 MVC 구조에서 가장 핵심 역할을 하며 내부적으로 웹 관련 처리의 준비작업을 진행하는데 이때 사용하는 파일이 servlet-context.xml

  7. 이 과정속 등록되는 객체(bean)들은 기존에 생성된 객체(bean)와 연동

 

 

 

handleMapping은 Request 처리를 담당하는 컨트롤러를 찾기 위해 존재

  1. handleMapping 인터페이스를 구현한 객체중 RequestMappingHandlerMapping은 @RequestMapping 어노테이션 기준으로 컨트롤러를 찾는다.

  2. Controller를 찾으면 handlerAdapter를 이용해 Controller를 동작

  3. Controller는 Request 처리하는 로직 작성 후 View에 전달

  4. View는 Model이란 객체에 담아 전달하며 이때 Controller는 다양한 타입의 결과를 ViewResolver를 통해 처리하여 반환

  5. ViewResolver는 View처리를 해석하는 역할을 하며 이때 설정은 servlet-context.xml에 정의된 InternalResourceViewResolver

  6. View는 응답하는 데이터를 JSP, HTML등을 이용하여 생성하고 응답은 DispatcherServlet을 통해 전송

 

 

 

3-tier방식

  • Presentation

  • Business

  • Persistence Tier

Persentation (화면계층)

  • 화면에 보여주는 기술 또는 스프링 MVC에서 JSP를 이용한 화면 구성

Business Tier(비지니스 계층)

  • 비지니스 로직을 담는 영역, 고객의 요구사항을 반영하고 메소드 이름 또한 고객이 사용하는 용어를 채택하여 사용한다.

Persistence Tier(데이터 계층)

  • 데이터를 어떤 방법으로 보관하고 다룰지에 대한 설계가 들어가는 계층, DB를 주로 사용하지만 네트워크호출이나 원격호출등 기술이 접목 가능

 

네이밍 규칙

  • Controller : 스프링 MVC에 동작하는 Controller 클래스를 설계시 사용

  • Service, ServiceImpl : 비지니스 영역을 담당하는 인터페이스는 Service, 인터페이스 구현 클래스는 ServiceImpl

  • DAO, Repository : DB에 data를 access 하는 객체 혹은 저장소 (예제 프로젝트는 Mybatis Mapper Interface 사용)

  • VO, DTO : 데이터를 담고 있는 객체를 의미 DTO는 데이터 수집의 성향이 강하고 VO는 ReadOnly 성향이 강하다

 

참고

코드로 배우는 스프링 웹프로젝트

'Spring' 카테고리의 다른 글

Spring @Annotation 종류와 이해  (0) 2019.05.17
mybatis와 스프링 연동 예제  (0) 2019.04.30
IntelliJ로 스프링 gradle 프로젝트 설정  (0) 2019.04.28
Spring 의 특징과 의존성  (0) 2019.04.25