개발 공부

코드로 배우는 스프링 웹 프로젝트 Chapter 5 본문

Spring/Spring

코드로 배우는 스프링 웹 프로젝트 Chapter 5

hyecozy 2022. 12. 11. 22:55

https://paradiseiswhereiam.tistory.com/160

 

코드로 배우는 스프링 웹 프로젝트 Part 1

Spring을 다시 복습하고자 집에 있던 책을 다시 폈다 Part 1은 개발환경설정 파트이므로 내가 참고한 부분만 정리해서 적겠음!! 해당 책은 21년도에 나온 책이므로 프로그램도 옛 버전을 구해서 적

paradiseiswhereiam.tistory.com

 

해당 책에서 구현하는 프로그램들이 다 너무 옛날 것이라 몇몇 부분은 

https://cafe.naver.com/gugucoding/7900

 

STS환경설정

STS3가 더이상 지원되지 않은지가 꽤 됐기 때문에 이클립스 + STS3 플러그인을 이용해야 합니다. 거기에 Lombok도 환경설정이 필요해서.. 겸사겸사 최신...

cafe.naver.com

위 카페에서 다운 받을 수 있는 PDF를 따랐다.

PDF 내용을 건너뛰어보니 Chapter 5가 다음 내용이길래 정리함

 

➡️프로젝트 구동 시 관여하는 XML은 web.xml, root-context.xml, servlet-context.xml 파일이다.

여기서 web.xml은 Tomcat 구동과 관련된 설정

나머지 두 개는 스프링과 관련된 설정이다.

 

➡️web.xml 상단에는 가장 먼저 구동되는 Context Listner가 등록되어 있다.

<context-param>에는 root-context.xml의 경로가 설정되어 있으며 <listner>에는 MVC의 ContextLoaderListner가 등록되어 있다.

- root-context.xml이 처리되면 파일에 있는 Bean 설정들이 동작하게 되는데, 여기서 정의된 객체(Bean)들이 스프링 영역(context) 안에 생성되고 객체들간의 의존성이 처리된다.

- root-context.xml이 처리된 후에는 스프링 MVC에서 사용하는 DispatcherServlet이라는 서블릿과 관련된 설정이 동작한다.

 

➡️org.springframework.web.servlet.DispatcherServlet 클래스는 스프링 MVC 구조에서 가장 핵심적인 역할.

내부적으로 웹 관련 처리의 준비작업을 진행한다. 이때 사용하는 파일이 servlet-context.xml

DispatcherServlet에서 XmlWebApplicationContext를 이용해서 servlet-context.xml을 로딩하고 해석함.

이 과정에서 등록된 Bean들은 기존에 root-context.xml에서 정의된 Bean들과 같이 연동되게 됨

 

 

➡️모델2와 스프링 MVC

모델 2방식: 로직과 화면을 분리하는 스타일의 개발 방식

-> 모델 2방식은 MVC의 구조를 사용

스프링 MVC 기본 구조

1) 사용자의 Request -> DispatcherServlet을 통해 처리한다.

2, 3) HandlerMapping은 Request의 처리를 담당하는 컨트롤러를 찾기 위해 존재한다. 

HandlerMapping 인터페이스를 구현한 여러 객체들 중 RequestMappingHandlerMapping같은 경우, 개발자가 @RequestMapping 어노테이션이 적용된 것을 기준으로 판단함.

적절한 컨트롤러가 찾아졌으면 HandlerAdapter를 이용해서 해당 컨트롤러를 동작시킨다.

4) Controller는 개발자가 작성하는 클래스.

실제 Request를 처리하는 로직을 작성하게 됨. 이때 View에 전달해야 하는 데이터는 Model이라는 객체에 담아 전달.

Controller는 다양한 타입의 결과를 반환하는데 이에 대한 처리는 ViewResolver를 이용하게 됨.

5) ViewResolver는 Controller가 반환한 결과를 어떤 View를 통해서 처리하는 것이 좋을지 해석하는 역할.

가장 흔하게 사용하는 설정은 servlet-context.mxl에 정의된 InternalResourceViewResolver이다.

6, 7) View는 실제로 응답 보내야 하는 데이터를 jsp 등을 이용해 생성하는 역할을 하게 되며, 만들어진 응답은 DispatcherServlet을 통해 전송된다.

 

여기서 익숙한 건 4번 과정이고 나머지는 무지성으로 따라 쳤기에 조금 생소했다.

그래도 한번 짚으며 넘어가니 불투명하던 MVC 패턴의 구조가 조금은 자릴 잡는 느낌이다. 

Comments