[CS] AOP

박원준·2025년 9월 14일

🌐 AOP (Aspect-Oriented Programming

AOP(관점 지향 프로그래밍)는 객체 지향 프로그래밍(OOP)에서 중복되는 공통 기능(로깅, 보안, 트랜잭션 관리 등)을 분리해 관리하는 기법입니다.
핵심 로직과 횡단 관심사(Cross-cutting Concern)를 분리하여 코드의 재사용성과 유지보수성을 높이는 것이 목적입니다.


✅ AOP란?

  • OOP의 보완 개념으로, 핵심 비즈니스 로직과 공통 관심사를 분리하는 패러다임
  • 주요 적용 사례: 로깅, 보안, 트랜잭션, 예외 처리
  • Spring AOP 같은 프레임워크에서 널리 사용됨

🔍 AOP의 주요 개념

개념설명
Aspect공통 기능을 모듈화한 것 (예: 로깅, 보안)
Join PointAOP가 적용될 수 있는 실행 지점 (메서드 실행 등)
Advice실제 수행할 공통 기능 코드 (Before, After, Around 등)
Pointcut어떤 Join Point에 AOP를 적용할지 정의
Weaving핵심 로직 + 공통 관심사를 합치는 과정

⚖️ AOP 장점과 단점

장점

  • 중복 코드 제거 → 코드 간결화
  • 핵심 로직과 분리된 관리 → 유지보수성 향상
  • 공통 기능의 일관된 적용 가능 (모든 메서드에 동일한 로깅 처리 등)

단점

  • 초심자에게 개념이 어렵고 코드 흐름 파악이 힘들 수 있음
  • 디버깅 복잡성 증가 (로직이 분리되어 실행되므로 추적이 어려움)
  • 남용 시 코드 가독성 저하 가능

🧠 추가 CS 지식

🔹 Spring AOP 적용 방식

  • 프록시 기반 AOP (Spring 기본)
    • JDK 동적 프록시: 인터페이스 기반 프록시 생성
    • CGLIB 프록시: 구체 클래스 기반 프록시 생성

🔹 AOP vs Filter vs Interceptor

  • Filter: 서블릿 단에서 실행, 요청/응답 전체를 가로챔
  • Interceptor: Spring MVC에서 실행, 컨트롤러 전후 처리
  • AOP: 비즈니스 로직 메서드 실행 전후/주변에 공통 기능 적용

🔹 실무 활용 예시

  • 로그인/권한 인증 처리 (보안)
  • 트랜잭션 관리 (Rollback, Commit)
  • 메서드 실행 시간 측정 (성능 모니터링)
  • 예외 처리 및 로깅

🔹 AOP와 DI(Dependency Injection)의 관계

  • AOP는 DI와 결합하여 강력해짐
  • Spring에서는 프록시 객체를 주입하여 AOP 적용

🔹 AOP와 OOP의 차이

  • OOP: 클래스 단위로 모듈화
  • AOP: 횡단 관심사 단위로 모듈화

🎯 면접 대비 질문 예시

💬 AOP의 개념을 설명해주세요.
💬 OOP와 AOP의 차이는 무엇인가요?
💬 Spring에서 AOP를 구현하는 방법은 무엇인가요?
💬 Filter, Interceptor, AOP의 차이를 설명해주세요.
💬 실무에서 AOP를 적용해본 경험이 있나요?
💬 프록시 기반 AOP의 동작 원리를 설명해주세요.

0개의 댓글