개발/Spring

[Spring] 스프링03

JaeHoist 2022. 12. 27. 18:13

1. MVC 패턴

 

Model, View, Controller의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴

Model : 백그라운드에서 동작하는 로직을 처리

View : 사용자가 보게 될 결과 화면을 출력

Controller : 사용자의 입력처리와 흐름 제어

 

MVC 모델 1

비즈니스 로직 영역(Controller)에 프레젠테이션 영역(View)을 같이 구현하는 방식이다.

사용자의 요청을 JSP가 전부 다 처리한다.

빠르고 쉽게 개발할 수 있는 장점

JSP파일 자체가 너무 비대해지고, Controller와 View가 혼재하므로 유지보수에 어려움을 겪을 수 있는 단점

 

MVC 모델 2

비즈니스 로직 영역과 프레젠테이션 영역이 분리되어 있는 구현 방식

사용자의 요청을 Servlet이 받고 그 요청을 View로 보여줄 것인지 Model로 보내줄 것인지 정하여 전송한다.

디자이너와 개발자의 분업이 가능하며 유지보수에 유리한 장점

설계에서 어려움을 겪을 수 잇고, 개발난이도가 높다는 단점

 

DAO,DTO???

DAO(Data Access Object)

데이터베이스의 데이터를 조작하는 기능을 전담하도록 만든 객체

데이터베이스의 엑세스를 DAO에서만 하게되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일 수 있고 다수의 DB호출 문제를 해결할 수 있습니다.

DTO(Data Transfer Object)

계층 간 데이터 교환을 위한 자바빈즈

로직을 가지고 있지 않은 순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter,setter 메소드만 가진 클래스

 

2. Spring MVC 패턴의 라이프 사이클

  1. 브라우저로 부터 request가 들어오면 일단 filter를 거치는데 대표적인 처리엔 encoding이 있다.
  2. HandlerMapping이 요청을 가로채 요청에 해당하는 적절한 Controller를 찾고 그것을 DispatcherServlet에 전달한다.
  3. DispatcherServlet은 실행할 Controller 정보를 HandlerAdapter에 전달한다.
  4. HandlerAdapter는 해당하는 Controller를 호출한다.
  5. Controller에서 전달된 요청을 처리한다. Controller는 서비스를 호출하고 Service에서는 DAO를 통해 데이터를 가져 온다. 그 결과를 model에 담고 View의 이름을 HandlerAdapter에 전달하게 된다.
  6. ViewResolver에서 매핑된 View를 찾아서 반환한다.
  7. DispatcherServlet은 반환된 View를 넘기게 된다.