Spring MVC 실행순서, 웹 계층 및 모델

전수·2022년 11월 22일
0

Spring

목록 보기
2/13
post-thumbnail

Spring MVC


Spring MVC 프레임워크는 웹 어플리케이션을 빌드하기 위한 프레임워크로 MVC(Model, View, Controller) 디자인 패턴을 따른다.

Spring MVC 설정

web.xml

  • Web Application 설정을 위한 Deployment Descriptor로 dispatcher-servlet을 호출
  • 서버가 deploy할 때 웹 정보 설정
  • 브라우저가 웹에 접근하기 위해서는 WAS에게 필요한 정보를 제공
  • WebInitializer.java로 작성가능

applicationContext.xml

  • Web Application 최상단에 위치하고 있는 context
  • BeanFactory를 상속받으며 필요한 설정정보를 담은 파일
  • 여러 서블릿에서 공통적으로 공유해서 사용할 수 있는 Bean 선언
    - @Service, @Repository, @Configuration, @Component
  • WebAppConfig.java로 작성가능

dispatcher-servlet.xml

  • WAS가 사용자 요청을 받으면 제일 앞에서 모든 요청을 처리함
  • 공통처리 작업을 처리한 후 적절한 세부 Controller로 작업을 위임
    - HandlerMapping, @Controller, ViewResolver
  • DispatcherServletConfig.java로 작성가능

위의 .xml파일들을 읽으면서 Spring Container 생성


Spring MVC 동작 구조 ( 출처 : 인프런 김영한 강의 - 참고1 )

실행순서

  1. Web Application 실행
  2. WAS에 의해 web.xml(WebInitializer.java) 실행
  3. ContextLoaderListner 생성
  4. WebAppConfig.class등록으로 applicationContext.xml(WebAppConfig.java)로딩
  5. applicationContext.xml(WebAppConfig.java)로 Container 설정
  6. 사용자 요청(http request) 발생 시 dispatcher-servlet.xml(DispatcherServletConfig.java)를 로딩하여 Container 설정
  7. 세부 Controller 동작
  8. 요청에 따라 View 또는 Service 수행

Spring Web 계층

Spring Web 계층에는 Presentation Layer, Business Layer, Persistence Layer가 존재하며 관심 분리를 통해 대상 계층에 집중이 가능해지고 모듈화로 재사용성이 증가하며 계층별 테스트가 용이해진다는 장점이 있다.


Presentation Layer

  • 브라우저 상의 웹 클라이언트 요청 및 응답 처리
  • 사용자 요청에 맞는 @Controller 호출
  • Business Layer, Persistence Layer에서 발생하는 예외처리
  • 인증이나 JSON 변환이 이루어짐
  • Controller, View 포함

Business Layer(Service Layer)

  • 실제 비지니스 로직을 수행하는 컴포넌트
  • 외부 API를 사용하거나 공통적으로 사용해야하는 작업을 처리
  • Controller에서 요청을 보내면 DAO를 이용해 실제 비지니스 로직을 수행
  • DAO에서 받은 Entity의 유효성을 확인하고 DTO로 변환
  • Persistence Layer와 Presentation Layer가 직접적으로 통신하지 않게 함
  • 트랜잭션 관리
  • Service Interface, @Service

Persistence Layer

  • Repository Layer 혹은 Data Access Layer라고 불림
  • DB에 데이터를 CRUD(Create, Read, Update, Drop)하는 계층
  • DAO Interface, @Repository

Spring Model

Spring Model에는 Entity, DAO, DTO, VO가 있어 각 계층별로 사용하는 모델이 달라 데이터베이스에 저장된 정보 변환을 예방할 수 있다.


Entity

  • 실제 데이터베이스와 일대일 매칭되는 클래스
  • DB Table 내 존재하는 컬럼만을 속성으로 가져야 함
  • 상속받거나 구현될 수 없으며 Presentation Logic을 가질 수 없음
  • 객체의 일관성을 보장하기 위해 setter의 무분별한 사용을 금지함
  • 구현 메소드는 주로 Service Layer에서 사용함

DAO(Data Access Object

  • DB에 접근하기 위한 객체로 CRUD 기능을 수행
  • DB 접근을 하기 위한 로직과 비지니스 로직을 분리하기 위함
  • Pa, Hibernate, MyBatis 등의 Persistence Framework를 통해 접근

DTO(Date Transfer Object)

  • 계층간 데이터 교환을 위한 Java Beans
  • 로직을 가지지 않는 순수한 데이터 객체로 getter/setter 메서드만 가짐
  • 데이터 전송 객체라는 의미를 가지며 주로 비동기 처리시 많이 사용됨

VO(Value Object)

  • literal 개념으로 값 그 자체의 의미를 가진 불변 클래스
  • Read-Only로 getter메서드만 가짐
  • equals(), hashcode() 오버라이딩을 통해 모든 값들이 같아서 동일 객체인지 판단

0개의 댓글

관련 채용 정보