[Spring] 시작부터 응답까지 흐름 분석
서비스 기동 시작
1. WAS가 구동되면서 web.xml이 로딩
2. web.xml에 등록되어 있는 ContextLoaderListener가 생성된다. ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현하고 있으며, ApplicationContext를 생성하는 역할을 수행한다.
3. 생성된 ContextLoaderListener는 root-context.xml을 loading한다.
4. root-context.xml에 등록되어 있는 Spring Container가 구동된다. @Service, @Repository와 같은 어노테이션이나 DB관련 객체, DAO, VO 객체들이 생성된다.
서비스 기동 끝 & 요청 시작
5. 클라이언트로부터 웹 애플리케이션이 요청이 온다.
6. Filter 처리
7. DispatcherServlet(Servlet)이 생성하고(재사용), servlet-context.xml을 loading 한다. ViewResolver, HanderMapping, Controllers가 생성된다.
8. interceptor 처리
9. AOP 처리
10. DispatcherServlet은 HandlerMapping을 통해 Controller로 위임처리한다. (service() 메소드 실행)
11. 처리 후 controller는 view이름을 리턴
요청 끝 & 응답 시작
12. AOP 처리
13. interceptor 처리
14. Filter 처리
12. viewResoler를 통해 사용자에게 보여준다.
>> 참고 할 다른 글
2022.10.24 - [[공부] 원리] - [Spring] Filter, Interceptor, AOP 차이
2022.10.24 - [[공부] 원리] - [Spring] web.xml, servlet-context.xml, context-*.xml
참고 자료:
https://doublesprogramming.tistory.com/84
https://minwan1.github.io/2017/10/08/2017-10-08-Spring-Container,Servlet-Container/