작도닷넷 블로그
작도닷넷 블로그

일기

Anyframe in Action 3. 소프트웨어 아키텍처 - MVC

11/03/19 12:38(년/월/일 시:분)

스프링 MVC 구조

1. Controller
2. Service
3. Dao (+ Util)
4. JSP

----그림으로 그리면 좋을텐데.



순서를 보자.

1. 사용자가 접근 (예) www.xacdo.net/login.do
2. web.xml에 정의된 DispatcherServlet 실행
3. "login.do"가 정의된 LoginController 실행
4. LoginController에서 LoginService를 실행
5. LoginService에서 LoginDao를 실행
6. LoginDao에서 DBUtil을 실행
7. 로그인 정보를 Model에 담아서 차곡차곡 넘겨주고, 결과를 JSP로 던짐
8. 사용자가 로그인했다.


왜 이렇게 귀찮게 나눠놨나 하면,
그래야 나중에 보기가 편하고, 고치기가 쉽다.

가독성. Readability.
코드가 읽기 좋으면 에러도 줄고, 남이 짠 코드를 보기도 좋고, 고치는데 시간도 덜 걸린다.

이렇게 다단계로 나눠 놓으면 코딩 시간도 길어지고, 느려지기도 한다.
하지만 시스템이 커지면 코드가 너무 길어져서, 읽기가 버겁다.

큰 시스템 용이다.

------


또, Struts 같은 경우 Controller만 쓰는데, Spring에서는 Controller와 Service를 나눴다.
Struts Controller = Spring Controller + Service

이걸 어떻게 나눠 써야 하는가가 헷갈리는 문제인데,
그거야 프로젝트 성격에 따라 다르다. 우리는 다음과 같이 일을 나눴다.

1. Controller - 어떤 요청으로 시작해서, 어떤 처리를 하고, 어디로 결과를 보낼 것인지 큰 흐름을 제어
2. Service - 실제 자잘한 비즈니스 로직은 다 여기에 넣음. 작은 흐름을 제어.
3. Dao - DB를 갔다 오거나, File을 읽고 쓰거나, SAP에 갔다 오거나 하는 것들
4. Util - DB는 DBUtil, File은 FileUtil, SAP은 SapUtil, 메일은 MailUtil
5. JSP - 화면 레이아웃, 자바스크립트


정답은 없지만, 하여튼 잘 나눠 놓으면 좋다.
잘 못 나누면 나중에 고생하니까 처음에 잘 나눠놓자.

혹시라도 막 뒤섞였다면, 급하지 않을때 잘 정리해놓자.
그런 걸 리팩터링(Refactoring)이라고 한다.

유지보수성(Maintainability) 향상.



------ 식당 비유를 들어보자.

1. Controller : 웨이터. 주문을 받아서 요리사에게 시킨다.
2. Service : 요리사. 요리를 해서 웨이터에 돌려준다.
3. Dao : 냉장고. 요리 재료들이 들어있다. 요리사가 꺼내 쓴다.

http://xacdo.net/tt/rserver.php?mode=tb&sl=2235

이름
비밀번호
홈페이지 (없어도 됩니다)

비밀글로 등록
작도닷넷은 당신을 사랑합니다.

[이전 목록]   [1] ... [312][313][314][315][316][317][318][319][320] ... [2298]   [다음 목록]

최근 글

이웃로그 관리자 옛날 작도닷넷 태터툴즈 ©현경우(xacdo) since 2001