Spring(스프링)을 처음 접하게 되면 그 사이즈부터 구조까지 한 번에 이해하기 힘들고 전반적인 개념을 알아듣기조차 힘들어요 ( 물론 아닌사람도 있겠지만 ..)
아직도 완전히 알지는 못하지만 그래도 처음 스프링프로젝트를 접했을 때 이 개념이 이 글이 조금이라도 도움이 되었으면 좋겠다고 바라면서
그리고 나 또한 이 구조를 잊지 않기 위해서 정리해 보려고 해요
Spring(스프링) Request Life Cycle (요청 생명 주기) - 동작 개념
제가 처음 Spring을 접했을 때 핵심개념인 DI(Dependency Injection)이며 IOC(Inversion Of Control) 컨테이너 등
이런 개념들은 둘째 치고 도대체 어떻게 프로젝트가 동작하는지 너무너무 답답하고 막막했어요
어디서부터 공부를 해야할 지 모르겠고 그러던 중 과장님이 추천해주신 유튜브 영상을 보고는 알게 됬습니다 ㅎㅎ
Kenu Heo닝믜 영상을 참조하여 제가 직접 정리한 그림이에요. (위의 그림만으로도 어느정도 감이 잡히실 거라 믿습니다 ㅎㅎ)
사용자로부터 요청이 들어오면 가장 먼저 반응하는 쪽은 바로 DispatcherServlet인데요 이 부분이 다양하게 상호작용하는 부분이 많아요.
그 다음으로 Controller에 연결되기 위해서 HandlerMapping을 참조하고 Controller로 넘어간 요청은 Service를 호출하여
필요한 데이터들을 DAO를 통해 DB에서 끄집어 옵니다.
끄집어 온 데이터들을 ModelAndView라는 비유하자면 그릇과 같은 객체에 담아 다시 DispatcherServlet에 반환해요.
그리고 ViewResolver를 통해서 비로소 View와 연결되고 사용자에게 출력되는 것이쥬
그링에서 보이듯이 스프링은 사용자의 요청이 여러 단계를 거치는데 이 과정들을 다 만들어 주다보면 클래스명이라던지 메서드명이 헷갈릴 수가 있어요
그렇기 때문에 헷갈리지 않기 위해서는 Naming 규칙이 정말 중요하다고 생각이 듭니다.
이상으로 Spring의 기본 동작 구조, 개념을 알아봤어요. 이 글을 통해서 저처럼 스프링 첫 대면에 답답했던 분들에게
조금이라도 도움이 되었으면 좋겠습니다.
도움이 되었던 유튜브 채널 공유해드릴게요! 부족한 글 끝까지 읽어주셔서 감사합니다.
( 참고로 영상은 옛날 옛적 아프리카시절 녹화하신거라 화질이 그닥 좋지 않아요.. 그래도 보시겠다면 링크 공유해드립니다 )