본문 바로가기
자바,스프링 - Java,Spring Framework

[Spring] Spring Framework 기본동작 순서 및 구조, 스프링 프레임워크 동작 및 구조, 스프링 프레임워크 구성요소

by devscb 2022. 7. 7.
반응형

Spring Framework 기본동작 순서 및 구조, 스프링 프레임워크 동작 및 구조, 스프링 프레임워크 구성요소



 Spring Framework (스프링프레임워크) 구조


Spring Framework (스프링프레임워크)에서의 동작처리를 알아보겠습니다.
정확히는 http request를 처리하는 방식에 대한 기본적인 내용을 설명해보려고 합니다.

먼저 전체적인 흐름은 아래와 같습니다.

 



  Spring framework(스프링 프레임워크 ) 의 각 구성요소


스프링 프레임워크의 각 구성요소에 대한 설명은 아래와 같습니다.

ServletContainer (서블릿 컨테이너)

Client (보통 크롬, 파이어폭스 등과 같은 웹브라우저)로부터 HTTP요청을 받아 서블릿 로직을 처리할 수 있는 구성요소입니다.
서블릿이란 javax.servlet 패키지에 정의된 인터페이스로, 자바 class 파일로 된 서버로직이라고 볼 수 있습니다.
ServletContainer의 대표적인 예로는 Tomcat이 있습니다.

Spring (스프링)
Spring framework (스프링 프레임워크) 영역입니다.

DispatcherServlet (디스패처 서블릿)
Spring framework (스프링 프레임워크)에서 front controller역할을 합니다.
실제 동작하기 위한 로직요청에 대해 처리할 수 있도록 해줍니다.
dispatch의 뜻을 보내다라는 뜻으로, 이곳에 요청이 오면 실제로 로직을 수행할 컴포넌트로 요청을 보내주는 역할을 하고, 반환을 받는 역할을 합니다.

HandlerMapping (핸들러 매핑)
Spring framework(스프링 프레임워크)에 작성된 여러 Controller(컨트롤러) 중에서 로직을 수해할 contoller를 확인해주는 컴포넌트입니다.

Controller (컨트롤러)
개발자가 직접 개발하는 컴포넌트로, http request를 개발자가 처리할 수 있도록 개발하는 컴포넌트입니다.

Service (서비스)
개발자가 직접 개발하는 컴포넌트로, 비지니스 로직을 수행하는 컴포넌트이니다.

DAO (Data Access Object, 디에이오)

개발자가 직접개발하는 컴포넌트로, Database에 직접적으로 접근하는 객체입니다.
보통 mybatis와 같은 persistence framework를 많이 활용합니다.


ViewResolver (뷰 리졸버)
ViewName을 기반으로 어떤 View 파일을 사용할것인지 확인해주는 컴포넌트입니다.

View (뷰)
개발자가 직접개발하는 컴포넌트로, 보통 UI화면을 의미합니다.


  시퀀스 다이어그램


시퀀스 다이어그램으로 그려보면 아래와 같이 표현할 수 있습니다.



1. HTTP 요청을 client에서 보내면 servlet container에서 이를 처리하도록 합니다.
2. servlet container에서는 spring이 처리해야한다는것을 인지하고, dispatcherServlet이 처리하도록 http request정보를 전달합니다.
servlet container에서 spring이 처리해야한다는 내용은 web.xml 파일에 기입이 되어 있습니다.
3. dispatherServlet은 http request 중 url과 메서드 등을 확인하여 @RequestMapping으로 매핑되어 있는 controller를 찾습니다.
4. 앞 단계에서 찾아진 controller가 할당이 되어 로직을 처리하게 됩니다.
5. controller 처리는 service의 조합으로 처리가 됩니다.
6. service는 DAO를 호출하여 비지니스 로직을 수행하게 됩니다.
7. DAO는 DB에 직접접근하여 쿼리를 수행하게 되고, 리턴결과를 자바 객체로 받게 됩니다.
8. DAO -> Service -> Controller로 결과를 리턴받게 되고, Controller는 Viewname과 Model을 리턴합니다.
9. Viewname을 리턴받은 DispatcherServlet은 ViewResolver로 어떤 View 파일을 활용할지 Viewname을 통해 확인합니다.
10. 확인된 View파일과 Model을 이용하여 사용자에게 최종적으로 보여질 UI화면을 http response에 실어서 클라이언트에게 리턴해줍니다.
11. client에서는 http response를 받아서(텍스트형식) 결과를 파싱하는 등의 처리를 진행해서 최종적으로 사용자에게 화면을 표시해주게 됩니다.

 총평


Spring의 구조를 분석해보려면 끝도 없습니다. 수년동안 많은 노하우들이 축적되어서 만들어진 거대한 프레임워크이기 때문에 다뤄야할것이 너무나 많습니다.
그래서 이번에는 핵심구조에 대해서만 먼저 알아보았습니다.
내가 스프링 프레임워크를 개발한다고 했을때, 너무나도 많은 구성요소가 있는것으로 보이고 복잡하게 개발되어 있는것처럼 보이지만,
여러 사람들이 모여서 이런 거대한 규모의 프레임워크를 나눈다면 역할구분을 잘하여 여러 컴포넌트를 만드는것이 훨씬 유리합니다.
스프링 구조와 흐름을 파악해서 서비스 운영시 도움에 되는부분도 있지만,
아키텍쳐를 배움으로써 비슷한 문제를 풀때 해당 방식을 사용해보는 것을 생각하는것도 고려하여 공부하는것도 중요하다고 생각합니다.
기회가 된다면 다른 프레임워크 구조를 보거나 소스 내용을 직접 분석도 해볼 수 있도록 하겠습니다.

Spring Framework 기본동작 순서 및 구조, 스프링 프레임워크 동작 및 구조, 스프링 프레임워크 구성요소
#스프링,#프레임워크,#스프링프레임워크,#spring,#framework,#dispatcherservlet,#contoller,#DAO,#service,#handlermapping,#viewresolver,#view,
#컨트롤러,#서비스,#핸들러매핑,#뷰,#뷰리졸버

 

https://devscb.com/post/119

 

[Spring] Spring Framework basic operation sequence and structure, Spring Framework operation and structure, Spring Framework com

Spring Framework basic operation sequence and structure, Spring Framework operation and structure, Spring Framework components Spring Framework structureLet’s take a look at operation processing in S

devscb.com

 

728x90
반응형

댓글