https://yuni-spring.tistory.com/40
이전 글에서는 스프링 부트와 스프링 레거시 프로젝트와 비교하여
내장 톰캣의 장점이 있고 그 장점을 파해치기 전 톰캣 관련하여 기초 지식을 간단히 알아보는 시간을 가졌다
오늘은 스프링 부트가 개발자에게 직접 영향을 미치는
코드를 어디까지 작성해야 하고, 어디까지 작성 안 해도 되는가에 대한 설명을 하려고 한다.
스프링 레거시 프로젝트가 실행 시 대략적으로 아래와 같이 순서로 진행된다.
톰캣 구동 -> web.xml 설정 읽기 -> dispatcherServlet 초기화, dispatcherServlet-servlet.xml 읽기
그래서 오늘은 web.xml에 대한 공부와 스프링 부트는 어떻게 우리를 편하게 해 주는지 알아보기로 했다!!
web.xml 은 DD (Deployment Descriptor : 배포 설명자)라고 불린다. Web Application의 설정 파일이다.
실행 시 메모리에 로드되기 때문에 가장 처음 읽히는 파일이다.
web.xml에 설정되는 내용이 많겠지만 기본적으로 몇가지 리스트를 나열하자면
1. DispathcherServlet
클라이언트의 요청을 전달받는 객체, 축구 선수가 Controller라면 이 녀석은 수석 코치의 역할을 한다.
수석 코치 아래에 보조 코치가 있는 것처럼 보조 코치 역할은 Handler Mapping, Handler Adapter
라는 객체가 선수 역할인 Controller를 찾아 불러서 실행시킨다.
1. dispathcherServlet : 7번 손흥민 컨트롤러 불러서 골 넣으라고 해봐
2. HandlerMapping : 손흥민 컨트롤러 전담 코치 대려옴
3. HandlerAdapter : 손흥민 컨트롤러 골 넣으라고 시킴 (어디 시합에서 넣을지도 시킴 ex main.jsp에 넣어라)
4. Controller : 골인~
2. ContextLoaderListener
DispathcherServlet 이 축구팀의 수석 코치고 그 아래 다양한 코치들이 공격수, 수비수, 미드필더 등 각 역할에 맞게
보조 코치들이 있지만 모두 축구선수라는 공통점이 있다.
모든 서블릿이 공통으로 가져야 할 설정을 Application Context 단위의 설정이 필요한데,
이 모든 참조가 가능한 것이 ContextLoaderListener이다.
3. Filter
구단주(클라이언트)가 시키는 대로 모든 걸 할 수는 없다.
우승해라고 말한다고 우승할 순 없기에 알아서 필터를 해서 열심히 해라라고 알아들어야 하는데
이게 필터다. 클라이언트에서 온 요청을 DispathcherServlet이 받기 전 거치는 부분
보통 인코딩 때문에 기초 설정 시 무조건 작성하게 되는 설정 코드이며
이후에도 스프링 시큐리티 작업 시에도 사용하게 된다.
하나하나 비교하려고 했는데 내일 출근해야 해서 여기까지 쓴다.
다음 글에선 레거시에서는 어떻게 설정하고, 스프링 부트에서는 어떻게 작성하는지 마무리를 지어 보자
'스프링' 카테고리의 다른 글
[Spring Boot -5] 스프링 부트가 개발자에게 직접적으로 주는 장점[3] root-context.xml (0) | 2024.04.11 |
---|---|
[Spring Boot -4] 스프링 부트가 개발자에게 직접적으로 주는 장점[2] servlet-context.xml (0) | 2024.04.05 |
[Spring Boot -2]스프링 부트 톰캣은 어디서 실행될까? (0) | 2024.03.26 |
[Spring Boot -1] 스프링 부트 장점과 그 이유 (2) | 2024.03.26 |
스프링 컨테이너의 종류 (0) | 2022.04.20 |