springmvc 전체 흐름 알아보기

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

Upload: myung-woon-oh

Post on 29-Nov-2014

740 views

Category:

Software


5 download

DESCRIPTION

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

TRANSCRIPT

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