2022년 4월 22일은 그 주에 배운 내용을 정리하던 날이었다. 다음 주 알고리즘 평가를 앞두고 있었고, 정보처리기사 실기와 Spring 학습도 함께 진행하고 있었다.
평가가 알고리즘 중심이라 조금 여유롭다고 적었지만 쉽다는 뜻은 아니었다. 주말에는 지금까지 풀어 본 문제를 다시 보고, 틀린 접근을 정리할 계획이었다.
당시 복습하려던 Spring MVC 구성
수업에서는 전통적인 Servlet 배포 방식의 Spring MVC 환경 설정을 다뤘다. 약어만 나열했던 초고를 역할 중심으로 다시 정리하면 다음과 같다.
ContextLoaderListener: 여러 Servlet이 공유할 루트WebApplicationContext를 초기화한다.DispatcherServlet: 요청을 받는 Front Controller이며, 보통 웹 계층 전용 자식 컨텍스트를 가진다.CharacterEncodingFilter: 요청과 응답의 문자 인코딩을 설정하는 Servlet Filter다.root-context.xml: 데이터 접근·서비스처럼 여러 웹 컴포넌트가 공유할 Bean을 두던 구성 파일이다.servlet-context.xml: Controller, ViewResolver 등 해당DispatcherServlet의 웹 계층 Bean을 두던 구성 파일이다.
Spring 공식 문서에서 설명하듯 루트와 자식 컨텍스트를 반드시 둘로 나눠야 하는 것은 아니다. 단일 컨텍스트로도 구성할 수 있고, Spring Boot는 내장 Servlet 컨테이너와 자동 설정 때문에 초기화 흐름이 다르다. 2022년의 이 공부는 현재 모든 Spring 프로젝트의 정답이 아니라, XML 기반 Spring MVC를 이해하기 위한 학습 맥락이었다.
- Spring Framework: Context Hierarchy
- Spring Framework: DispatcherServlet
- Spring Framework: CharacterEncodingFilter
다음 학습과 배포 계획
당시 계획은 5월 7일까지 정보처리기사 실기와 Spring 기본을 공부하고, 5월 8일부터 만들고 싶었던 웹사이트를 구현해 배포하는 것이었다. 다음 주 수업에서는 REST API, AJAX와 Spring Boot 진도를 예상했다.
이전에 Gunicorn과 Nginx로 서비스를 배포했다가 예상하지 못한 소액 요금이 발생한 경험도 적어 두었다. 다음 배포에서는 사용하지 않는 DB 인스턴스를 반드시 제거하겠다는 체크 항목으로 남겼다. 실제로 계획을 완료했는지는 이 글에 기록되어 있지 않으므로 결과를 덧붙이지 않는다.
'배움과 성장 > 커리어·회고' 카테고리의 다른 글
| 백준·기술면접·NFT 프로젝트를 함께 잡은 5월 목표 (0) | 2022.05.17 |
|---|---|
| SSAFY 7기 Spring 수업 기록: 요청이 Controller·Service·DAO를 흐르는 과정 (0) | 2022.04.27 |
| Django와 Spring을 배우며 깨달은 기술 편견 (0) | 2022.04.21 |
| 어제와 다른 오늘: ‘일일신’을 실행 계획으로 바꾸기 (0) | 2022.02.22 |
| 간결한 코드와 글쓰기: 짧음보다 생각이 읽히는 코드 (0) | 2022.02.20 |
댓글