springmvc 전체 흐름 알아보기
DESCRIPTION
다단계로 유명한 SpringMVC의 단계별 역할과 설정으로 SpringMVC의 전체적인 감을 잡아보는 자료TRANSCRIPT
왜 ? 따위는 없는 ..
있는 그대로만 살펴보는쉬운 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 명 이상이 등장해서이처럼 난리 법석을 떤다 .
왜 이렇게까지 복잡해야돼 ?
치고 일단 있는 그대로 알아보기나 하자 ..
DispatcherServlet
무슨 역할 ?웹 애플리케이션의 최전방에서 사용자의 요청을 접수하여URL 을 기준으로 요청을 처리할 Controller 를 정해진 XML 에서 찾고그 Controller 에 처리를 위임하고 결과를 받아서사용자에게 처리 결과가 담긴 화면 제공
DispatcherServlet
쉽게 ?ARS..
누가 어떤 일을 할 줄 아는 지만 알고 있다 .
그래서 어떤 일이 생기면 그거 잘 하는 넘에게 전달 .
한식 주문이면 한식 담당 접수계에게 ,
일식 주문이면 일식 담당 접수계에게 연결 .
Spring 에서 제공되는 클래스로 소스 코드는 볼 필요 없음
뭐 .. 봐봤자 복잡하기만 하겄지 ..
DispatcherServlet
DispatcherServlet
설정은 어디에 ?web.xml 에 설정
기타정해진 XML( 여기서는 context-mvc.xml) 의 정보 활용 사용자 요청을 처리할 Controller 목록과 사용자에게 보여줄 화면을 찾는 ViewResolver
직접 코딩하지 않고 Spring 에서 제공하는 Servlet 재사용
context-mvc.xml
무슨 역할 ?DispatcherServlet 에게 아래의 정보를 제공한다 .
사용자의 요청을 처리할 수 있는 Controller 목록과 사용자에게 보여줄 화면 URL 을 만드는 ViewResolver
context-mvc.xml
컨트롤러 목록
ViewResolver
Controller
무슨 역할 ?DispatcherServlet 에 의해 호출되어사용자의 Request 를 전달받고 ,
해당 요청의 비즈니스 처리를 담당하는 서비스 객체를Spring 으로부터 주입 (Dependency Injection) 받아서 ,
그 서비스 객체에 처리를 위임하고 ,
처리 결과와 결과 화면에 대한 정보를DispatcherServlet 에게 반환한다 .
Controller
쉽게 ?한식 / 일식 / 중식 /… 접수계 ..
한식 접수계에서는 주문을 검증하고 , 한식 주방에 주문 한식 요리가 나오면 배송지 태그 부착일식 접수계에서는 주문을 검증하고 , 일식 주방에 주문 일식 요리가 나오면 배송지 태그 부착
Controller
@Controller, @RequestMapping, @Autowired
서비스 처리 결과를 Model 에 담으면 ,
컨트롤러 클래스의 RequestMapping 값 (/member) 과핸들러 메서드의 RequestMapping 값 (/list) 을 기준으로 ,
DispatcherServlet 이 ViewResolver 를 통해 화면 URL
생성
Controller
설정은 어디에 ?DispatcherServlet 이 참조하는 XML( 여기서는 con-
text-mvc.xml) 에 설정
@Controller 만 여기에서 Bean 으로 등록
Service
무슨 역할 ?Controller 에 의해 호출되어실제 비즈니스 로직과 트랜잭션을 처리하고 ,
DB CRUD(Persistence) 를 담당하는 DAO 객체를 Spring 으로부터 주입 받아서 ,
DAO 에 DB CRUD 처리를 위임하고 ,
처리 결과를 Controller 에게 반환한다 .
Service
쉽게 ?한식 / 일식 / 중식… 주방 ..
가장 중요한 결과물인 요리를 만들어낸다 .
기록을 남기기 위해 요리 장부도 작성한다 .
Service
@Service, @Transactional, @Autowired
비즈니스 로직과 트랜잭션 처리
Service
설정은 어디에 ?ApplicationContext.xml
@Controller 가 아닌 @Service, @Repository 등은모두 여기에서 Bean 으로 등록
DAO
무슨 역할 ?Service 에 의해 호출되어쿼리를 담당하는 SqlMapClientTemplate 객체를Spring 으로부터 주입받아서 ,
SqlMapClientTemplate 객체에 쿼리 수행을 위임하고 ,
처리 결과를 Service 에게 반환한다 .
DAO
쉽게 ?한식 / 일식 / 중식… 요리 메모 작성 ..
기록을 남기기 위해 요리 메모를 작성한다 .
DAO
@Repository, @Autowired
SqlMapClientTemplate 을 통해 쿼리 수행 후 결과 반환
DAO
설정은 어디에 ?ApplicationContext.xml
@Controller 가 아닌 @Service, @Repository 등은모두 여기에서 Bean 으로 등록
SqlMapClientTemplate
무슨 역할 ?DAO 에 의해 호출되어SqlMapConfig.xml 의 정보를 이용해서실제 쿼리문을 읽어와서CRUD 수행 후결과를 반환한다 .
쉽게 ?한식 / 일식 / 중식… 요리 장부 작성 ..
기록을 남기기 위해 요리 메모를 토대로요리 내용을 정식으로 장부에 작성한다 .
SqlMapClientTemplate
Spring 에서 제공되는 클래스로 소스 코드는 볼 필요 없음
DB 에 CRUD 를 해야하니 지금까지 나온 적이 없는 Data-
Source 정보를 이놈이 가지고 있을테고실제 쿼리 수행하는 코드가 있겄지 ..
SqlMapClientTemplate
설정은 어디에 ?
ApplicationContext.xml
SqlMapClientTemplate
SqlMapClient 에 의해 생성되고 ,SqlMapClient 가 DataSource 정보를SqlMapClientTemplate 에 전달
ApplicationContext.xml
SqlMapConfig.xml
무슨 역할 ?SqlMapClient 에게 아래의 정보를 제공한다 .
비즈니스 도메인 별 쿼리가 저장된 xml 파일 정보
SqlMapConfig.xml
Member.xml
무슨 역할 ?비즈니스 도메인 별 실제 쿼리 저장
Member.xml
사용자 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 는 감이 와야 되는거다 ..
왜 ? 는 다음에 ..
참고 자료
쉽게 따라하는 자바 웹개발
토비의 스프링 3