AOP란?

송영재·2022년 12월 4일

Spring

목록 보기
33/45
  • 부가기능 모듈화의 필요성
    • '핵심기능': 각 API 별 수행해야 할 비즈니스 로직
    • '부가기능': 핵심기능을 보조하는 기능
    • 문제점
      • 모든 '핵심기능'의 Controller 에 '부가기능' 코드를 추가했을 때..
        • '핵심기능' 이 100개라면??
          • 100개의 '핵심기능' 모두에 동일한 내용의 코드 추가 필요
        • '핵심기능' 이 나중에 추가된다면?
          • 항상 '부가기능' 추가를 신경써야 함
          • '부가기능' 추가를 깜박한다면?
            • 일부 API 수행시간이 추가되지 않음 → Top5 회원의 신뢰성 이슈
      • '핵심기능' 수정 시
        • 같은 함수 내에 '핵심기능'과 '부가기능'이 섞여 있음
        • '핵심기능' 이해를 위해 '부가기능'까지 이해 필요
      • '부가기능'의 변경이 필요하다면??
        • '핵심기능'의 개수만큼 '부가기능'도 수정해 줘야 함
        • '부가기능' 삭제
  • 부가기능을 모듈화
    • AOP (Aspect Oriented Programming) 를 통해 부가기능을 모듈화
      • '부가기능'은 '핵심기능'과는 관점(Aspect), 관심이 다름
      • 따라서 '핵심기능'과 또옥~!! 분리해서 '부가기능' 중심으로 설계, 구현 가능
  • 스프링이 제공하는 AOP

    1. 어드바이스: 부가기능
    2. 포인트컷: 부가기능 적용위치

0개의 댓글