KEEP GOING

[SRPING] MVC 패턴과 스프링 프레임워크 동작 원리 본문

web/spring

[SRPING] MVC 패턴과 스프링 프레임워크 동작 원리

jmHan 2021. 6. 28. 14:04
반응형

1. MVC 패턴 

 

출처 : https://hyoje420.tistory.com/36

MVC 패턴이란 디자인 패턴 중 하나로 스프링 프레임워크에서 주로 쓰이는 개념이다. 

디자인 패턴이란 SW를 개발하던 사람들이 이전에 직면했던 문제들에 대한 해결책을 말한다.

쉽게 말해 SW를 개발하고 유지보수를 쉽게 하기 위해 미리 정해놓은 약속이라고 생각하자.

 

( 개발자 면접에서도 스프링 프로젝트를 진행했다고 하면 반드시 물어보는 질문 중 하나로 중요한 개념이라고 한다. )

모델(MODEL), 뷰(VIEW), 컨트롤러(CONTROLLER)로 구성되어 있다.

 

 

 

 

VIEW : 사용자에게 제공되는 화면이다. 사용자에게 입력을 받을 수 있고 동시에 출력을 제공한다.  화면을 구성하기 위해 모델에서 데이터를 가져온다. 

정보처리기사에서 배웠듯이 체크박스같은 사용자 인터페이스도 VIEW라고 할 수 있다.

 

체크박스 출처:http://docs.tobesoft.com/developer_guide_nexacro_17_ko#fb92bef6404d9090

 

VIEW는 모델과 컨트롤러에 대한 정보를 모른다고 가정한다. 단순히 보여주기식 화면일 뿐이다. 그리고 모델의 일부가 수정된 경우 변경 사항을 알릴 수 있도록 처리하는 방법을 구현해야 한다. 

 

 

 

 

MODEL : 모델은 핵심적인 기능부로 어플리케이션을 구성하는 정보와 정보를 구성하는 컴포넌트를 의미한다. data, stutus, application logic 값이 들어있다. 모델도 역시 CONTROLLER나 VIEW에 대해서는 아는 부분이 없다. 

 

 

 

 

CONTROLLER : 컨트롤러는 뷰와 모델 사이에서 둘을 연결시켜주는 기능을 한다.

VIEW로부터 사용자 요청값을 받고 모델로 정보가 흐르기 이전에 어떤 의미를 가지는지 파악한다.

이를 간단히 사용자 입력을 처리하고 흐름을 제어한다고 말한다.

컨트롤러는 중매자이므로 MODEL과 VIEW에 대해 잘 알고 있어야 한다. 

 

 

 

 

그렇다면 왜 스프링은 MVC패턴을 사용하는 것일까?

:

:

MVC 패턴은 위에서 살펴보았듯 각자 역할이 명확히 분담되어 있어 유지보수 측면에서 매우 효율적이다. 

더불어 어플리케이션의 유연성, 확장성을 증가시켜주기에 자주 사용된다.

MVC 패턴을 사용하는 프레임워크(혹은 라이브러리)로는 Spring 외에도 react, AngularJS, django 등이 있다.

 

 

 

2. 스프링 프레임워크의 동작원리 

 

동작 순서

1. 클라이언트의 요청을 DispatcherServlet에서 받는다.

2. DispatcherServlet은 haddlerMapping을 통해 요청된 url에 매핑된 Controller를 실행한다.

3. Controller는 Service 객체를 호출한다.

4. Service는 DAO를 통해 DB에 접근하여 데이터를 요청한다.

5. DB에서 전달받은 데이터를 다시 DAO > Service > Controller 순으로 전달한다.

6. Controller는 ViewResolver를 통해 전달받은 데이터를 받을 View가 있는지 찾는다.

7. 적절한 View를 찾았다면 이 데이터를 다시 DispatcherServlet에게 전달한다.

8. DispatcherServlet은 전달받은 데이터를 다시 클라이언트에게 전달한다.

 

  

위 사진은 mvc 기반의 스프링 프레임워크 동작원리를 시각화해둔 자료이다. 

(모델 부분은 service와 dao로 구성된다.)

파란색으로 체크되어 있는 부분은 스프링 프레임워크에서 제공해주는 기능이다.

사용자에게 제공되는 화면인 뷰를 통해 사용자 요청값이 전송된다.

서버에 저장된 정보들은 모두 url로 매핑되어 있기에 사용자는 URL을 통해 데이터를 요청할 수 있다. 

 

 

http://호스트주소:포트번호/경로명?쿼리스트링

 

 

서블릿을 통해 url 요청 정보에 맞는 데이터에 접근할 수 있는 특정 컨트롤러가 동작한다. 

컨트롤러는 자바 파일로 구현할 수 있으며 어노테이션이라는 기능을 통해 컨트롤러를 지정할 수 있다.

어노테이션이란 @를 통해 호출할 수 있으며 프로그램에게 정보를 제공하는 메타데이터(데이터를 위한 데이터)이다.

 

작게 dto라고 표현하였는데 dto는 데이터베이스에 접근 가능한 객체를 의미한다. 

정보를 담는 작은 그릇이라고 생각하면 쉽다. vo라는 개념과 혼용돼서 쓰인다고 한다.

 

요청된 자료에 대한 응답은 빨간색 로직을 통해 전달되고 다시 이 서블릿이 응답 정보를 뷰에 포워딩 해준다.

해당 정보는 .jsp 파일로 구성되어 있다. 

 

 

 

 

 참고자료 : https://m.blog.naver.com/jhc9639/220967034588

https://m.blog.naver.com/jhc9639/220967034588

 

반응형
Comments