SpringMVC 전체 흐름 알아보기

30
왜? 왜왜왜 왜왜 .. 왜왜 왜왜왜왜 왜왜왜왜 왜왜 SpringMVC

description

다단계로 유명한 SpringMVC의 단계별 역할과 설정으로 SpringMVC의 전체적인 감을 잡아보는 자료

Transcript of SpringMVC 전체 흐름 알아보기

Page 1: SpringMVC 전체 흐름 알아보기

왜 ? 따위는 없는 ..

있는 그대로만 살펴보는쉬운 SpringMVC

Page 2: SpringMVC 전체 흐름 알아보기

사용자 View DispatcherServlet

context-mvc.xml

Con-troller

Mem-ber

Service

Mem-berDao

SqlMapClient

Template

SqlMapConfig.xml

Mem-ber.xml

submit

/member/list

getCon-troller

list

list

list

queryForList

getQuery

getQuery

@Autowired

@Autowired

@Autowired

@Controller

사용자가 회원 목록 한 번 조회하면SpringMVC 를 쓰는 웹 애플리케이션에서는대략 9 명 이상이 등장해서이처럼 난리 법석을 떤다 .

왜 이렇게까지 복잡해야돼 ?

치고 일단 있는 그대로 알아보기나 하자 ..

Page 3: SpringMVC 전체 흐름 알아보기

DispatcherServlet

무슨 역할 ?웹 애플리케이션의 최전방에서 사용자의 요청을 접수하여URL 을 기준으로 요청을 처리할 Controller 를 정해진 XML 에서 찾고그 Controller 에 처리를 위임하고 결과를 받아서사용자에게 처리 결과가 담긴 화면 제공

Page 4: SpringMVC 전체 흐름 알아보기

DispatcherServlet

쉽게 ?ARS..

누가 어떤 일을 할 줄 아는 지만 알고 있다 .

그래서 어떤 일이 생기면 그거 잘 하는 넘에게 전달 .

한식 주문이면 한식 담당 접수계에게 ,

일식 주문이면 일식 담당 접수계에게 연결 .

Page 5: SpringMVC 전체 흐름 알아보기

Spring 에서 제공되는 클래스로 소스 코드는 볼 필요 없음

뭐 .. 봐봤자 복잡하기만 하겄지 ..

DispatcherServlet

Page 6: SpringMVC 전체 흐름 알아보기

DispatcherServlet

설정은 어디에 ?web.xml 에 설정

기타정해진 XML( 여기서는 context-mvc.xml) 의 정보 활용 사용자 요청을 처리할 Controller 목록과 사용자에게 보여줄 화면을 찾는 ViewResolver

직접 코딩하지 않고 Spring 에서 제공하는 Servlet 재사용

Page 7: SpringMVC 전체 흐름 알아보기

context-mvc.xml

무슨 역할 ?DispatcherServlet 에게 아래의 정보를 제공한다 .

사용자의 요청을 처리할 수 있는 Controller 목록과 사용자에게 보여줄 화면 URL 을 만드는 ViewResolver

Page 8: SpringMVC 전체 흐름 알아보기

context-mvc.xml

컨트롤러 목록

ViewResolver

Page 9: SpringMVC 전체 흐름 알아보기

Controller

무슨 역할 ?DispatcherServlet 에 의해 호출되어사용자의 Request 를 전달받고 ,

해당 요청의 비즈니스 처리를 담당하는 서비스 객체를Spring 으로부터 주입 (Dependency Injection) 받아서 ,

그 서비스 객체에 처리를 위임하고 ,

처리 결과와 결과 화면에 대한 정보를DispatcherServlet 에게 반환한다 .

Page 10: SpringMVC 전체 흐름 알아보기

Controller

쉽게 ?한식 / 일식 / 중식 /… 접수계 ..

한식 접수계에서는 주문을 검증하고 , 한식 주방에 주문 한식 요리가 나오면 배송지 태그 부착일식 접수계에서는 주문을 검증하고 , 일식 주방에 주문 일식 요리가 나오면 배송지 태그 부착

Page 11: SpringMVC 전체 흐름 알아보기

Controller

@Controller, @RequestMapping, @Autowired

서비스 처리 결과를 Model 에 담으면 ,

컨트롤러 클래스의 RequestMapping 값 (/member) 과핸들러 메서드의 RequestMapping 값 (/list) 을 기준으로 ,

DispatcherServlet 이 ViewResolver 를 통해 화면 URL

생성

Page 12: SpringMVC 전체 흐름 알아보기

Controller

설정은 어디에 ?DispatcherServlet 이 참조하는 XML( 여기서는 con-

text-mvc.xml) 에 설정

@Controller 만 여기에서 Bean 으로 등록

Page 13: SpringMVC 전체 흐름 알아보기

Service

무슨 역할 ?Controller 에 의해 호출되어실제 비즈니스 로직과 트랜잭션을 처리하고 ,

DB CRUD(Persistence) 를 담당하는 DAO 객체를 Spring 으로부터 주입 받아서 ,

DAO 에 DB CRUD 처리를 위임하고 ,

처리 결과를 Controller 에게 반환한다 .

Page 14: SpringMVC 전체 흐름 알아보기

Service

쉽게 ?한식 / 일식 / 중식… 주방 ..

가장 중요한 결과물인 요리를 만들어낸다 .

기록을 남기기 위해 요리 장부도 작성한다 .

Page 15: SpringMVC 전체 흐름 알아보기

Service

@Service, @Transactional, @Autowired

비즈니스 로직과 트랜잭션 처리

Page 16: SpringMVC 전체 흐름 알아보기

Service

설정은 어디에 ?ApplicationContext.xml

@Controller 가 아닌 @Service, @Repository 등은모두 여기에서 Bean 으로 등록

Page 17: SpringMVC 전체 흐름 알아보기

DAO

무슨 역할 ?Service 에 의해 호출되어쿼리를 담당하는 SqlMapClientTemplate 객체를Spring 으로부터 주입받아서 ,

SqlMapClientTemplate 객체에 쿼리 수행을 위임하고 ,

처리 결과를 Service 에게 반환한다 .

Page 18: SpringMVC 전체 흐름 알아보기

DAO

쉽게 ?한식 / 일식 / 중식… 요리 메모 작성 ..

기록을 남기기 위해 요리 메모를 작성한다 .

Page 19: SpringMVC 전체 흐름 알아보기

DAO

@Repository, @Autowired

SqlMapClientTemplate 을 통해 쿼리 수행 후 결과 반환

Page 20: SpringMVC 전체 흐름 알아보기

DAO

설정은 어디에 ?ApplicationContext.xml

@Controller 가 아닌 @Service, @Repository 등은모두 여기에서 Bean 으로 등록

Page 21: SpringMVC 전체 흐름 알아보기

SqlMapClientTemplate

무슨 역할 ?DAO 에 의해 호출되어SqlMapConfig.xml 의 정보를 이용해서실제 쿼리문을 읽어와서CRUD 수행 후결과를 반환한다 .

Page 22: SpringMVC 전체 흐름 알아보기

쉽게 ?한식 / 일식 / 중식… 요리 장부 작성 ..

기록을 남기기 위해 요리 메모를 토대로요리 내용을 정식으로 장부에 작성한다 .

SqlMapClientTemplate

Page 23: SpringMVC 전체 흐름 알아보기

Spring 에서 제공되는 클래스로 소스 코드는 볼 필요 없음

DB 에 CRUD 를 해야하니 지금까지 나온 적이 없는 Data-

Source 정보를 이놈이 가지고 있을테고실제 쿼리 수행하는 코드가 있겄지 ..

SqlMapClientTemplate

Page 24: SpringMVC 전체 흐름 알아보기

설정은 어디에 ?

ApplicationContext.xml

SqlMapClientTemplate

SqlMapClient 에 의해 생성되고 ,SqlMapClient 가 DataSource 정보를SqlMapClientTemplate 에 전달

ApplicationContext.xml

Page 25: SpringMVC 전체 흐름 알아보기

SqlMapConfig.xml

무슨 역할 ?SqlMapClient 에게 아래의 정보를 제공한다 .

비즈니스 도메인 별 쿼리가 저장된 xml 파일 정보

Page 26: SpringMVC 전체 흐름 알아보기

SqlMapConfig.xml

Page 27: SpringMVC 전체 흐름 알아보기

Member.xml

무슨 역할 ?비즈니스 도메인 별 실제 쿼리 저장

Page 28: SpringMVC 전체 흐름 알아보기

Member.xml

Page 29: SpringMVC 전체 흐름 알아보기

사용자 View DispatcherServlet

context-mvc.xml

Con-troller

Mem-ber

Service

Mem-berDao

SqlMapClient

Template

SqlMapConfig.xml

Mem-ber.xml

submit

/member/list

getCon-troller

list

list

list

queryForList

getQuery

getQuery

@Autowired

@Autowired

@Autowired

@Controller

이제 최소한 역할과어디에서 뭘 어떻게 설정하는지는 이해 했으니

이 시점에서 한 번 더 보면SpringMVC 의 전체 Flow 는 감이 와야 되는거다 ..

왜 ? 는 다음에 ..

Page 30: SpringMVC 전체 흐름 알아보기

참고 자료

쉽게 따라하는 자바 웹개발

토비의 스프링 3