Spring 실행 순서

[출처] https://velog.io/@gokoy/Spring-%EB%8F%99%EC%9E%91-%EC%88%9C%EC%84%9C

  1. web.xml을 로드하여 Servlet Container를 실행
  2. Servlet Container는 web.xml을 읽어 등록된 ContextLoaderListener을 실행
  3. ContextLoaderListener는 default 값으로 applicationContext.xml(root-context.xml) 파일을 읽어 Spring Container를 생성. 이를, Root Container라고도 부름.
  4. Root Container에는 모든 Servlet과 Filter들이 공유하는 자원을 메모리에 생성(Service, DB connection, DAO 등)
    5-6. Client로부터 요청이 들어오면 Servlet Container는 Dispatcher Servlet을 생성
  5. Dispatcher Servlet는 presentation-layer.xml(servlet-context.xml) 파일을 읽어 새로운 Spring Container를 생성. 여기서 생성된 컨테이너는 Controller 객체를 메모리에 생성
더보기
  • Dispathcer Servlet = FrontController + Request Dispatcher
  • FrontController : 모든 요청을 한 곳으로 집중시켜 일괄적으로 처리하게끔
  • Request Dispatcher : Client로부터 받은 Request 정보를 서버의 다른 자원(HTMl, JSP또는 Servlet등의 자원) 에 보내는 역할을 하는 인터페이스
  • DAO(Data Access Object): DB를 사용해 데이터를 조회하거나 조작하는 기능(Repository)
  • VO(Value Object): 계층간 데이터 교환을 위한 자바 빈즈(read only, Domain)

 

Client 접근 동작 순서

[출처] https://velog.io/@gokoy/Spring-%EB%8F%99%EC%9E%91-%EC%88%9C%EC%84%9C

1-2. Client가 WAS에 접근하면 FrontController 역할을 하는 DispatcherServlet이 요청을 가로챔
3. HandlerMapping 설정에서 해당 요청을 처리할 Controller를 탐색
4. Controller에서 RequestResponseBodyMethodProcessor presentation-layer.xml(servlet-context.xml)에 선언해놓은 MessageConverter을 이용하여 요청 본문(파라미터) 읽음

5-10. 데이터 저장 및 응답 가공
11. 요청을 처리한 뒤, HTML로 응답할 경우 결과를 출력할 View의 이름, Data로 응답할 경우 MessageConverter을 이용하여 Json 데이터를 반환
12. HTML로 응답한 경우 ViewResolver에서 받은 view 이름(string)으로부터 해당 view를 탐색
13. 탐색한 view 객체를 반환
14. 처리 결과가 포함된 View를 DispatcherServlet에 전달
15. Client에게 최종 결과 출력

'Web > Spring' 카테고리의 다른 글

[배경] Maven  (0) 2021.07.27
[배경] Template Engine  (0) 2021.07.27
[배경] Spring Security  (0) 2021.07.27
[배경] MVC Pattern  (0) 2021.07.27
[배경] Servlet  (0) 2021.07.27

+ Recent posts