AOP란?

안성희·2025년 8월 31일

자바 스터디

목록 보기
1/5

AOP의 간단 정의?

왜 관점지향인가?

  • 프로그램을 구성하는 여러 기능들을 "핵심 기능"과 "부가 기능"으로 서로 다른 관점으로 분리해서 관리하는 프로그래밍 방식이기때문에 관점 지향 이라고 부름

AOP를 적용하는 방법?

  • 핵심 비즈니스 로직부가적인 로직을 분리하여 모듈화 한다.
  • 프로그램의 여러 부분에 흩어져 중복되는 공통 관심 사항을 하나의 모듈로 묶어 관리
    • 코드의 중복과 복잡성을 줄이고 유지보수를 용이하게 함

핵심 로직과 부가 로직의 차이

핵심 로직의 특징

  1. 애플리케이션의 본질적인 목적과 가치를 제공하는 기능
  2. 사용자가 직접적으로 요구하고 기대하는 주요 기능
  3. 도메인 특화적이며, 각 애플리케이션마다 고유한 로직

예시

  • 주문 처리
  • 결제 처리
  • 사용자 등록
  • 상품 검색
  • 데이터 계산

부가 로직의 특징

  1. 핵심 기능을 지원하거나 보완하는 공통적인 부가 기능
  2. 비즈니스 가치와 직접적인 관련은 없지만 시스템 운영에 필수적
  3. 여러 모듈이나 클래스에서 반복적으로 필요한 횡단 관심사

예시

  • 로깅
  • 보안 검증
  • 트랜잭션 관리
  • 성능 측정
  • 예외 처리
  • 캐싱

핵심 로직과 부가 로직을 구분하는 방법?

목적성 기준

이 기능이 없으면 애플리케이션의 핵심 가치가 제대로 전달되는가?

  • Yes => 핵심 로직
  • No => 부가 로직

중복성 기준

이 코드가 여러 클래스나 메서드에서 반복되는가

  • Yes => 부가 로직
  • No => 핵심 로직

변경 빈도 기준

이 기능의 변경이 다른 비즈니스 로직에 영향을 주는가?

  • Yes => 부가 로직
  • No => 핵심 로직

SOLID 원칙 적용

이 기능이 클래스의 단일 책임을 위반하는가?

  • Yes => 부가 로직
  • No => 핵심 로직

AOP와 SRP의 차이는 무엇인가?

  • SRP는 객체 지향 설계 원칙 중 하나 AOP는 프로그래밍 설계 패러다임
  • 서로 기능을 분리하는 방식의 차이가 있음
  • 서로 상호 보완 관계 AOP를 사용하면 SRP를 준수할 수 있게 됨
profile
무재다능 개발자

0개의 댓글