Backend/Spring

Spring framework 동작원리

saintclair 2023. 6. 3. 15:07

1) 클라이언트 요청(Request) - web.xml 실행

web.xml에서는 요청에 대해 우선 처리 시작

여기서 DispatcherServlet이 web.xml에서 다른 처리로 넘어가기 전 의 형태로 들어오는 요청을 가로채 servlet-context.xml 로 넘겨버린다.

 

2) DispatcherServlet이 요청을 가로채고 servlet-context.xml을 실행

servler-context.xml 의 <context:component-scan.../>에서는 해당 위치의 어노테이션을 읽고 bean으로 등록한다.
<annotation-driven />은 HandlerMapping & HandelerAdapter의 역할로써, component-scan을 통해서 스캔된 bean 중에서 해당 요청과 알맞은 Controller를 찾아 연결시켜준다.

 

 

3) HomeController로 이동


servlet-context.xml의 component-scan에 의해 HomeController의 @Controller이 읽혀 bean으로 등록되었고, annotation-driven은 @RequestMapping을 읽어들이면서 해당 요청 (/)을 처리할 수 있는 Controller를 찾아냈다.

그렇게 해서 HomeController가 요청을 받을 수 있게 된 것.
요청을 받은 Controller는 적당한 처리를 취한 뒤, Model.addAttribute()를 통해 처리완료된 데이터를 Model에 다시 담고, "Home"이라는 이름으로 return 한다.

Model과 Controller 거쳤으니, 이제 View를 거칠 차례
servlet-context.xml로 돌아와 Controller에서 반환된 "Home"을 가지고 View로 접근할 수 있는 경로를 만든다.

 



이 과정을 거치면 /WEB-INF/views/Home.jsp 라는 경로가 최종적으로 만들어지게 되고 InternalResourceViewResolver를 통하여 이에 맞는 View를 찾는다.

 

 

 

자세한 설명↓

출처 : https://hello-walnuty.tistory.com/16