⏳ Time Log/1. One Day (Daily · TIL)

Day 34 (12/4) – Spring Legacy: 웹 애플리케이션 개발 (Part 2)

this.Serena 2026. 2. 20. 12:14

 

🏗️ Spring Legacy: 웹 애플리케이션 개발 (Part 2)

1. 웹 계층 구조 및 구동 흐름

Spring 6 레거시 프로젝트는 여러 설정 파일이 유기적으로 연결되어 구동됨. 각 설정 파일의 역할과 빈(Bean) 관리 범위를 이해하는 것이 핵심임.

  • web.xml: 웹 애플리케이션의 시작점. ContextLoaderListener와 DispatcherServlet 설정 포함.
  • root-context.xml: 비즈니스 로직(Service), 데이터베이스 관련(Mapper, DataSource) 등 공통 빈을 설정하는 곳.
  • servlet-context.xml: 웹 요청 처리와 관련된 빈(Controller, ViewResolver, 정적 리소스 경로)을 설정하는 곳.
  • 흐름: web.xml → root-context (Service/Repository) → servlet-context (Controller) 순으로 로드됨.

2. 코드 최적화: 리스트 출력

MyBatis를 통해 가져온 데이터 리스트를 로그로 확인할 때, 기존의 향상된 for문 대신 자바 8 이상의 람다(Lambda)를 활용하여 간결하게 표현 가능함

// 기존 방식 (for-loop)
List<BoardDTO> list = boardMapper.list();
for (BoardDTO dto : list) {
    log.info(dto);
}

// 최적화 방식 (Lambda forEach)
boardMapper.list().forEach(dto -> log.info(dto));

⚙️ Eclipse & Tomcat 컨텍스트 루트(Context Root) 설정

프로젝트 접속 경로를 http://localhost:8080/project_name에서 http://localhost:8080/으로 변경하는 3가지 방법

  1. 서버 모듈 편집: Servers 탭 → Tomcat 더블클릭 → Modules 탭 → 프로젝트 선택 → Edit → Path를 /로 수정
  2. 프로젝트 속성 변경: 프로젝트 우클릭 → Properties → Web Project Settings → Context root를 /로 수정
  3. server.xml 직접 수정: Servers 프로젝트 내 server.xml 파일 하단의 <Context docBase="..." path="" ... /> 부분에서 path 속성 값을 빈 값("")으로 수정

⚛️ React: 감정 일기장 프로젝트 (Button Section)

재사용 가능한 버튼 컴포넌트를 활용하여 일기장 하단의 컨트롤러 섹션을 구현함

  • 진행 범위: 교재 p.454~ 버튼 섹션 구현 완료
  • 주요 포인트:
    • 공통 버튼 컴포넌트 활용: text, type, onClick 등의 props를 전달하여 일관된 디자인 유지
    • 스타일링: 버튼이 하단에 고정되거나 특정 영역에 나열되도록 CSS Flexbox 또는 Grid 활용

✏️ 내일의 계획 및 메모

  • Spring: 게시판 디자인(UI) 레이아웃 적용 및 CRUD 기능 구체화 예정
  • React: 감정 아이템 선택 섹션 및 작성 페이지 로직 완성 목표
  • 참고: 레거시 환경에서는 web.xml 설정 하나만 어긋나도 서버 구동이 안 되므로 설정 파일 간의 xmlns와 xsi:schemaLocation 버전을 항상 체크할 것