spring : spring model2 방식이란? (스프링 mvc)

2018. 1. 15. 17:22BACK/spring

스프링 프레임워크를 사용해서 프로젝트를 진행하면


대체로 스프링 mvc를 사용합니다. 스프링 mvc는 모델 2 방식 구조를 사용하기 때문에


이론적으로 모델 2 방식의 구조가 어떤 것인지 이해하는게 중요하겠죠!


흔히 모델 2 방식은 mvc 구조를 응용한 방식이라고 하는데


가장 핵심적인 내용은 '화면과 데이터 처리를 분리해서 재사용이 가능하도록 만든 구조'입니다!


MVC 라 함은 M ( Model ) , V ( View ) , C ( Controller ) 로 분리합니다.


M 모델 : 데이터 혹은 데이터를 처리하는 영역 입니다.


V 뷰 : 실질적으로 데이터를 화면에 어떻게 보여줄 것인지 표면적인 결과물을 만드는 영역 입니다.


C 컨트롤러 : 웹의 요청에 따라 각기 다른 로직을 수행하여 처리하는 영역이며, 동시에 모델과 뷰 사이의 중간 통신 역할을 합니다.


그림으로 표현하자면 ,



이런식으로 웹의 요청이 들어오면


컨트롤러가 요청을 구분하여 모델과 데이터를 가공하여 (주고받고)


컨트롤러에서 정의된 view 경로로 뿌려주는 과정을 거칩니다.


이같은 형태로 개발자와 웹 퍼블리셔의 영역을 분리하였고


URI를 통해 뷰를 제어하기 때문에 뷰의 교체나 변경 시 유용하게 사용될 수 있는 구조가 되었습니다.


하지만, 각 컨트롤러 사이에는 중복적인 코드가 여전히 존재했고


개발자들 개개인의 개발 패턴 및 습관 등의 차이로 하나의 프로젝트에 여러 패턴들이 뒤섞여 버립니다.


그것을 방지하고자 Front Controller 방식을 적용하는데 이 방식 또한 그림으로 살펴보겠습니다.




이처럼 FrontController 패턴의 가장 중요한 변화는


전체 로직의 일부를 컨트롤러에게 위임하고


모든 흐름의 제어는 앞 쪽의 FrontController가 담당하는 형태입니다.


FrontController 로 인해 좀 더 규격화된 코드를 작성 할 수 있습니다.


1. FrontController 에서 사용자의 요청을 받습니다.


2. 적절한 Controller 를 찾아 호출합니다.


3. 호출받은 Controller는 해당 요청을 처리할 수 있는 Service를 찾습니다.


4. 해당 Service는 데이터베이스 작업을 담당하는 DAO를 통해 원하는 작업을 수행합니다.


5. 작업이 완료되고 처리된 데이터를 컨트롤러에 다시 전달합니다.


6. 컨트롤러는 다시 MVC 쪽으로 데이터를 전달하여 해당 View에 뿌려집니다.