DC Spring Legacy Migration Project
본 프로젝트는 JSP/Servlet Model 2 기반의 레거시(daechul-project)를 Spring Framework 환경으로 마이그레이션한 프로젝트입니다. IoC/DI 컨테이너와 AOP를 도입하여 객체 간 결합도를 낮추고, Spring Security를 통합하여 URL 레벨 제어 및 어노테이션 기반(@PreAuthorize)의 세밀한 권한 관리를 구현하였습니다.
Spring 6 요구사항 충족을 위한 Java 21 및 Jakarta EE 최신 스펙 적용
Spring Security 6 기반 인증/인가, CSRF 토큰, BCrypt 암호화
MyBatis 선언적 매핑, HikariCP 커넥션 풀, 트랜잭션 관리
Legacy Servlet to Spring MVC
Layered Architecture & Components
org.zerock.controller
요청 URL 매핑, Model 객체 관리, View
반환(JSP)
org.zerock.service
핵심 비즈니스 로직 처리, 트랜잭션 단위의 기능 수행
org.zerock.mapper
MyBatis SQL 인터페이스, DB CRUD 연동
org.zerock.dto / domain
계층 간 데이터 교환을 위한 객체 (Lombok @Data
사용)
org.zerock.security
UserDetailsService 구현, 권한 관리 및 필터 보안
src/main/resources
log4j2.xml, MyBatis Config, Mapper XML
Request Processing Flow & Dependency Injection
DispatcherServlet이 모든 HTTP 요청을 중앙에서 받아 적절한 Controller로 위임하며, Service와 Mapper를 거쳐 DB 결과가 DTO로 변환되어 반환됩니다.
상위 레이어는 하위 레이어의 인터페이스에만 의존하며, 구체적인 구현체는 스프링 컨테이너에 의해 주입됩니다.
클라이언트의 요청 데이터는 DTO에 담겨 전달되며, DB에서 조회된 결과 또한 DTO를 통해 화면까지 전달됩니다.
Core Features & Functionality
CRUD 기능, 페이징 처리, 조회수 증가
Ajax 기반 실시간 댓글 등록/삭제, 게시글 연동 처리
회원가입, 중복 체크, 회원 정보 수정
Spring Security Form Login, Remember-me, 로그아웃
게시글 작성자 본인 확인(AOP)
Retrospective & Contact
단순한 코드 변환을 넘어, Servlet/JSP의 한계점을 스프링 프레임워크가 어떻게 해결하는지 체득했습니다. 의존성 주입(DI)과 관점 지향 프로그래밍(AOP)을 직접 구현하며 백엔드 아키텍처에 대한 깊이 있는 이해를 갖추게 되었습니다.