반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- gradle
- fotmatter
- findAny
- java
- 포맷터
- RestTemplate
- AOP 매개변수
- LogInterceptor
- Save Action
- JsonStringType
- restTemple
- jpa
- AOP this
- ClientHttpRequestInterceptor
- @AutoConfiguration
- vaultTemplate
- Starter
- 쓰레드 안전
- Stream
- AOP
- ResponseBodyAdvice
- JsonType
- 개방/폐쇄 원칙
- Spring Boot
- spring
- AOP target
- AccessLevel
- Thread Safety
- findFirst
- auto configuration
Archives
- Today
- Total
맨땅에 헤딩하는 개바른자
Spring MVC Lifecycle 구조 본문
반응형
회사에서 업무를 보면서 Request용 Dto를 검증하는 과정에서 컨트롤러 진입 전에 여러 단계를 걸치면서 유입되는 과정을 보게된다.
단순히 Filter, Interceptor등 컨트롤러 진입 전 전처리를 하기 위한 구성이 있다는 정도만 알고있어도 충분히 업무에서도 무리없이 가능하지만 간혹 상급 개발자분들끼리 얘기하시는 용어를 못 알아 들을 때가 있었다. 프록시를 타는건가? 구멍을 뚫어서 길을 만들어주면될거 같다 등등 왈왈왈 ~
듣다보니 답답함이 생겨서 MVC를 공부하는 취지로 글을 작성하려고 한다.
[Spring 라이프사이클 구조]
위 그림 예제에서 controller, service, repositry는 다 아는 내용으로 생략
- Filter
- 요청이 들어오면 제일 먼저 적용되는 부분이다.
- DispatcherServlet
- 많이 들어본 녀석인데..? 자바를 처음 배울 때 학원에서 doGet, doPost 단계에서 dispatcher 위임처리 할 때 많이 보던 단어다
- 이거랑 연관이 있는걸가? 완전 초기 배울 때라 정확히 기억이 안나네요 ^^;
- 들어오는 모든 Request를 우선적으로 받아 처리해주는 서블릿이다.
- HandlerMapping에게 Request에 대해 매핑할 Controller 검색을 요청한다.
- HandlerMapping으로부터 Controller 정보를 반환받아 해당 Controller와 매핑시킨다.
- Dispatcher라는 단어가 '배치 담당자'라는 뜻이 있듯이, 말 그대로 Request에 대해 어느 컨트롤러로 매핑시킬것인지 배치하는 역할을 한다.
- 많이 들어본 녀석인데..? 자바를 처음 배울 때 학원에서 doGet, doPost 단계에서 dispatcher 위임처리 할 때 많이 보던 단어다
- HandlerMapping
- DispatcherServlet으로부터 검색을 요청받은 Controller를 찾아 정보를 리턴해준다.
- HandlerInterceptor
- Request가 Controller에 매핑되기전 앞단에서 부가적인 로직을 끼워넣는다.
- 주로 세션, 쿠키, 권한 인증 로직에 많이 사용된다.
- ViewResolver
- Controller에서 리턴한 View의 이름을 DispatcherServlet으로부터 넘겨받고, 해당 View를 렌더링한다.
- 렌더링한 View는 DispatcherServlet으로 리턴하고, DispatcherServlet에서는 해당 View 화면을 Response 한다.
AOP 구성 시 사용되는 항목
- FilterAOP경우 Spring단계에서 사용되기 때문에 Filter에서 적용하는 건 Java단의 기능 적용이 적절한거 같다.
- 본인은 Logging 기능에 관련된 항목을 Filter에 적용한 사례가 있다.
- Filter의 상세한 내용은 Filter만 다루는 글에 정리할 계획이다.
- 그리고 Filter의 구현체들이 다양하게 존재하는데 이것도 상세하게 알아볼 계획이다.
- 그림에서 보다시피 Filter가 적용되는 시점은 WebApplication에서 처리가 된다.
- Interceptor 그림에서 보다시피 interceptor가 적용되는 시점은 SpringApplication에서 적용된다. Spring 관련 된 로직이나, Bean에 접근해서 해야할 땐 interceptor에서 작업을 진행하면 된다.
반응형
'JAVA' 카테고리의 다른 글
static 메소드 내 지역변수는 thread safe 한가? (0) | 2022.07.22 |
---|---|
리스코프 치환 원칙 (LSP) Liskov substitytion principle (0) | 2022.05.26 |
개방/폐쇄 원칙 (OCP open/closed principle) (0) | 2022.05.24 |
Controller Response 공통 처리 하기 (0) | 2022.04.27 |
JAVA 다형성을 이해해보자 (기본편) (0) | 2022.04.15 |