[스프링부트 blogV3] 5. AOP - 관점지향프로그래밍

silver's avatar
Feb 03, 2025
[스프링부트 blogV3] 5. AOP - 관점지향프로그래밍
  1. 관점에 따라 다르게 행동할 수 있어야한다 - 핵심
  1. 부가로직을 공통모듈로 만들어야한다. → 부가로직이 동일한 코드여야한다. - 특징
  1. 행단관심사(행동 단위 관심사 : 특정 기능이나 관심사를 중심으로 시스템을 모듈화하고 구성하는 접근 방식)
notion image

1. AOP

관점 지향 프로그래밍(Aspect-Oriented Programming, AOP)은 프로그램의 여러 부분에서 반복적으로 나타나는 공통 관심사를 따로 분리하여 관리하는 방법이다.
  • 관점에 따라 행위가 달라져야 함
  • 공통 관심사를 분리하여 재사용
  • SRP(단일 책임 원칙) 준수

2. AOP의 주요 특징

2.1 행단위 관심사 분리

  • 핵심 로직(Core Concern): 비즈니스 로직에 필수적인 부분
  • 부가 로직(Cross-cutting Concern): 여러 곳에서 공통적으로 사용되는 부분
    • 로깅, 보안, 트랜잭션 등

2.2 동적 행위 결정

  • Reflection을 통한 런타임 동작 변경
  • 어노테이션이나 필드를 기반으로 다른 행위 수행
  • 프록시 패턴을 통한 부가 기능 구현

3. 예시

3.1 "옷을 입다" 예시

공통 모듈 (부가 로직) - "옷을 입다" ↓ 상황별 구현 (핵심 로직) - 회사 미팅: 격식있게 입기 - 운동: 츄리닝 입기 - 소개팅: 젠틀하게 입기

3.2 "이동하다" 예시

공통 모듈 (부가 로직) - "이동하다" ↓ 구체적 구현 (핵심 로직) - 지하철 타기 - 걷기 - 버스 타기

4. AOP 구현 방식

4.1 프록시 패턴

  • 공통 관심사를 프록시 객체로 분리
  • 원본 객체의 메소드 호출 전/후에 부가 기능 수행

4.2 Reflection 활용

  • 런타임에 클래스의 정보를 분석
  • 어노테이션이나 필드 정보를 기반으로 동작 변경

5. AOP 사용의 이점

  1. 코드 중복 제거
  1. 비즈니스 로직의 명확한 분리
  1. 유지보수성 향상
  1. 재사용성 증가
 
 
Share article

silver