[UMC/8기][Spring Boot] 4주차 시니어 미션

Young Min Kang·2025년 4월 6일

UMC

목록 보기
4/4

전통적인 서블릿과 Spring MVC

전통적인 서블릿(Servlet) 기반 개발과 Spring MVC의 차이를 조사하고,
- HttpServlet, doGet(), doPost() 방식과
- @Controller, @RequestMapping, DispatcherServlet 구조를 비교.

전통적인 서블릿(Servlet) 개발 방식

  • HttpServlet 클래스를 직접 상속받아 doGet(), doPost() 메서드를 오버라이딩해 사용.
  • 클라이언트의 HTTP 요청(GET/POST)을 명시적으로 구분하여 처리해야 함.
  • URL 매핑과 요청 파라미터 처리, 응답 생성까지 모두 개발자가 명시적으로 구현해야 함.

Spring MVC 개발 방식

  • @Controller, @RequestMapping 애너테이션을 통해 요청 처리 메서드를 명시적으로 정의.
  • DispatcherServlet(프론트 컨트롤러)가 모든 요청을 받아 처리.
  • URL 매핑, 파라미터 바인딩, 데이터 변환, 뷰 렌더링을 프레임워크가 자동화하여 처리.
  • 코드의 구조화와 관심사의 분리(Separation of Concerns)를 제공.
  • 유지보수가 용이하며 중복 코드 제거 효과.

차이

AOP(Aspect-Oriented Programming) 원리 탐구

OOP vs AOP 차이점

핵심개념

  • Aspect: 부가적인 기능(로깅, 트랜잭션 등)을 별도의 모듈로 정의한 것.
  • JoinPoint: Aspect가 적용될 수 있는 위치(메서드 실행 등).
  • Pointcut: Aspect가 실제로 적용될 JoinPoint를 지정하는 표현식.
  • Advice: 지정된 JoinPoint에서 실행될 코드(before, after, around).
  • Weaving: 핵심 로직과 Aspect를 합쳐 최종 기능을 생성하는 과정.

런타임 위빙 vs 컴파일 타임 위빙 비교


Spring AOP는 런타임 위빙(프록시 기반) 방식을 사용한다.

Spring AOP의 프록시 패턴 동작 원리

  • Spring AOP는 프록시(Proxy) 객체를 생성하여 Aspect를 적용한다.
  • 원본 객체 대신 프록시 객체가 호출된다.
  • 프록시 객체가 실제 메서드 호출 전후에 정의된 Advice를 실행한다.
  • 핵심 로직과 부가 로직(Aspect)이 완전히 분리되어 유지보수가 용이해진다.

클라이언트 ➡️ 프록시 객체 ➡️ Advice(부가 로직 실행) ➡️ 실제 객체 메서드 호출

profile
꾸준히 한걸음씩

0개의 댓글