SlideShare a Scribd company logo
왜?따위는 없는..
있는 그대로만 살펴보는
쉬운 SpringMVC
사용자 View Dispatcher
Servlet
context-mvc
.xml
Controller Member
Service
Member
Dao
SqlMap
Client
Template
SqlMap
Config
.xml
Member
.xml
submit
/member/list
getController
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(여기서는 context-
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를 해야하니 지금까지 나온 적이 없는
DataSource 정보를 이놈이 가지고 있을테고
실제 쿼리 수행하는 코드가 있겄지..
SqlMapClientTemplate
설정은 어디에?
ApplicationContext.xml
SqlMapClientTemplate
SqlMapClient에 의해 생성되고,
SqlMapClient가 DataSource 정보를
SqlMapClientTemplate에 전달
ApplicationContext.xml
SqlMapConfig.xml
무슨 역할?
SqlMapClient에게 아래의 정보를 제공한다.
비즈니스 도메인 별 쿼리가 저장된 xml 파일 정보
SqlMapConfig.xml
Member.xml
무슨 역할?
비즈니스 도메인 별 실제 쿼리 저장
Member.xml
사용자 View Dispatcher
Servlet
context-mvc
.xml
Controller Member
Service
Member
Dao
SqlMap
Client
Template
SqlMap
Config
.xml
Member
.xml
submit
/member/list
getController
list
list
list
queryForList
getQuery
getQuery
@Autowired
@Autowired
@Autowired
@Controller
이제 최소한 역할과
어디에서 뭘 어떻게 설정하는지는 이해 했으니
이 시점에서 한 번 더 보면
SpringMVC의 전체 Flow는 감이 와야 되는거다..
왜?는 다음에..
참고 자료
쉽게 따라하는 자바 웹개발
토비의 스프링3

More Related Content

PDF
우아한 객체지향
PDF
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
PPTX
Developing New Widgets for your Views in Owl
PDF
당근마켓 고언어 도입기, 그리고 활용법
PDF
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
PPTX
REST API 설계
PDF
PDF
aws blackbelt amazon elasticsearch service
우아한 객체지향
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
Developing New Widgets for your Views in Owl
당근마켓 고언어 도입기, 그리고 활용법
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
REST API 설계
aws blackbelt amazon elasticsearch service

What's hot (20)

PDF
How To Become Better Engineer
PDF
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
PDF
Cours design pattern m youssfi partie 6 proxy
PDF
Rich domain model
PDF
우아한테크세미나-우아한멀티모듈
PDF
Spring integration을 통해_살펴본_메시징_세계
PDF
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
PPTX
Java 8 streams
PDF
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
PDF
Ksug2015 - JPA3, JPA 내부구조
PDF
OAuth2 and Spring Security
PDF
Hello Armeria, Bye Spring
PPTX
Rethinking Best Practices
PDF
간단한 블로그를 만들며 Django 이해하기
PDF
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
PDF
Curso de Java Persistence API (JPA) (Java EE 7)
PDF
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
PDF
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
PPTX
Soap vs rest
PDF
서버학개론(백엔드 서버 개발자를 위한)
How To Become Better Engineer
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
Cours design pattern m youssfi partie 6 proxy
Rich domain model
우아한테크세미나-우아한멀티모듈
Spring integration을 통해_살펴본_메시징_세계
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
Java 8 streams
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
Ksug2015 - JPA3, JPA 내부구조
OAuth2 and Spring Security
Hello Armeria, Bye Spring
Rethinking Best Practices
간단한 블로그를 만들며 Django 이해하기
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Curso de Java Persistence API (JPA) (Java EE 7)
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
대용량 트래픽을 처리하는 최적의 서버리스 애플리케이션 - 안효빈, 구성완 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
Soap vs rest
서버학개론(백엔드 서버 개발자를 위한)
Ad

Similar to SpringMVC 전체 흐름 알아보기 (20)

PPTX
Spring mvc
PPTX
[웹기반시스템 3조] mvc
PDF
[오픈소스컨설팅]Spring MVC
PPT
Spring MVC
PDF
보다 나은 웹 어플리케이션 설계
PDF
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PPTX
[스프링 스터디 3일차] @MVC
PDF
04.실행환경 교육교재(화면처리)
PPTX
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
PDF
자바 웹 개발 시작하기 (4주차 : MVC)
PPTX
스프링 3.0 RESTful & restTemplate
PPTX
멋쟁이사자처럼_백엔드_멘토_강의자료_MVC 패턴과 영속성 컨텍스트.pptx
PDF
Jpa 쿼리 포함 자료
PDF
Jpa 쿼리 포함 자료
PPTX
[스프링 스터디 3일차] 스프링 웹 기술 응용과 MVC
PDF
스프링 3.0 & RESTful
PPTX
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
PDF
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
PDF
Mvc 패턴
PDF
Spring 교육 자료
Spring mvc
[웹기반시스템 3조] mvc
[오픈소스컨설팅]Spring MVC
Spring MVC
보다 나은 웹 어플리케이션 설계
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
[스프링 스터디 3일차] @MVC
04.실행환경 교육교재(화면처리)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
자바 웹 개발 시작하기 (4주차 : MVC)
스프링 3.0 RESTful & restTemplate
멋쟁이사자처럼_백엔드_멘토_강의자료_MVC 패턴과 영속성 컨텍스트.pptx
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
[스프링 스터디 3일차] 스프링 웹 기술 응용과 MVC
스프링 3.0 & RESTful
[KAU UMC 컨퍼런스] Java 기반 Web의 역사 - 김준기
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
Mvc 패턴
Spring 교육 자료
Ad

SpringMVC 전체 흐름 알아보기