250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Core Java
- AJAX
- SpringBoot
- Open Source
- git
- Spring Boot
- myBatis
- Source
- error
- ubuntu
- maven
- MSSQL
- MySQL
- spring
- JavaScript
- Eclipse
- Thymeleaf
- 오픈소스
- 설정
- IntelliJ
- Python
- Tomcat
- Exception
- PostgreSQL
- Docker
- JDBC
- oracle
- 문서
- jpa
- STS
Archives
- Today
- Total
헤르메스 LIFE
[Spring] Spring MVC의 라이프사이클 본문
728x90
Spring MVC 라이프 사이클을 공부합니다.
검색을 해보니 대부분 다음과 같은 이미지로 통일되더군요..
그 중 제일 알아보기 쉬운 장표를 찾았습니다.
Request가 들어오는 Flow는 그림과 같이 순서대로 흘러갑니다.
Filter -> DispatcherServlet -> HandlerMapping -> HandlerInterceptor -> controller -> Service -> Repository -> ViewResolver 순으로 들어오게 됩니다.
1. Filter
- Web Application의 전역적인 로직을 담당합니다.
- Filter라는 단어 뜻에서 알 수 있듯이, 전체적인 필터링(설정)을 하는 곳입니다.
- DispatcherServlet에 들어가기 전인 Web Application단에서 실행됩니다.
2. DispatcherServlet
- 들어오는 모든 Request를 우선적으로 받아 처리해주는 서블릿입니다.
- HandlerMapping에게 Request에 대해 매핑할 Controller 검색을 요청합니다.
- HandlerMapping으로부터 Controller 정보를 반환받아 해당 Controller와 매핑시킵니다.
- Dispatcher라는 단어가 '배치 담당자'라는 뜻이 있듯이, 말 그대로 Request에 대해 어느 컨트롤러로 매핑시킬것인지 배치하는 역할을 합니다.
3. HandlerMapping
- DispatcherServlet으로부터 검색을 요청받은 Controller를 찾아 정보를 리턴해줍니다.
4. HandlerInterceptor
- Request가 Controller에 매핑되기전 앞단에서 부가적인 로직을 추가할 수 있습니다.
- 주로 세션, 쿠키, 권한 인증 로직에 많이 사용됩니다.
5. Controller
- Request와 매핑되는 곳입니다.
- Request에 대해 어떤 로직(Service)으로 처리할 것인지를 결정하고, 그에 맞는 Service를 호출합니다.
- Service Bean을 스프링 컨테이너로부터 주입받아야 한다. Service Bean의 메소드를 호출해야 하기 때문입니다.
6. Service
- 데이터 처리 및 가공을 위한 비즈니스 로직을 수행합니다.
- Request에 대한 실질적인 로직을 수행하기 때문에, Spring MVC Request Lifecycle의 심장이라고 볼 수 있다. Service가 없다면 서버 애플리케이션의 존재 이유도 없습니다.
- Repository를 통해 DB에 접근하여 데이터의 CRUD(Create, Read, Update, Delete)를 처리합니다.
7. Repository ( DAO )
- DB에 접근하는 객체이다. DAO(Data Access Object) 라고 부릅니다.
- Service에서 DB에 접근할 수 있게 하여 데이터의 CRUD를 할 수 있게 해줍니다.
8. ViewResolver
- Controller에서 리턴한 View의 이름을 DispatcherServlet으로부터 넘겨받고, 해당 View를 렌더링합니다.
- 렌더링한 View는 DispatcherServlet으로 리턴하고, DispatcherServlet에서는 해당 View 화면을 Response 합니다.
그림 출처 : all-record.tistory.com/164
글의 내용은 이분 블로그에서 가져왔습니다. 정말 깔끔하게 정리하셨습니다.
velog.io/@damiano1027/Spring-Spring-MVC-Request-Lifecycle
728x90
'Spring Framework' 카테고리의 다른 글
[Spring Boot] SLF4J를 이용한 Log 설정 시 주의점 (0) | 2021.01.09 |
---|---|
[Spring] Filter & HandlerInterceptor와 AOP의 차이점 (0) | 2021.01.09 |
[SpringBoot] 스프링 부트 스타터 프로젝트 옵션들 (0) | 2021.01.03 |
[Spring] Spring + MyBatis 에러처리 (0) | 2020.12.21 |
[Spring] log4jdbc-remix 를 이용한 쿼리 로그 출력하기 (0) | 2020.12.06 |