내 세상

[Spring] Spring in Action, Chapter 4. 애스펙트 지향 스프링 본문

Technical/Spring

[Spring] Spring in Action, Chapter 4. 애스펙트 지향 스프링

sga8 2019. 7. 30. 14:42
728x90
반응형

횡단 관심사(Cross-cutting concerns)

  • 소프트웨어에서 로깅, 보안 트랜잭션 관리 같은 기능은 대부분의 애플리케이션에 공통적으로 나타나는 기능

 

DI - Appl. 객체 간 결합도를 낮추기 위함

AOP - 횡단 관심사와 이에 영향 받는 객체 간 결합도를 낮추기 위함

 

AOP (Aspect Object Programming)

  • 기존 : 상속(inheritance), 위임(delegation)을 사용하여 공통 기능을 재사용함
    → But, 상속은 객체의 정적 구조에 의존하므로 복잡하고 깨지기 쉬운 구조가 되기 십상
    → 위임은 대상 객체에 대한 복잡한 호출로 인해 번거로움.
  • 현재 : 횡단 관심사를 aspect라는 특별한 클래스로 모듈화함
    • 첫 번째 장점 : 전체 코드 기반에 흩어져 있는 관심 사항이 하나의 장소로 응집된다는 점
    • 두 번째 장점 : 여타 서비스 모듈이 자신의 주요 관심 사항 또는 핵심 기능에 대한 코드만 포함하고 그 외 관심 사항은 모두 aspect로 옮겨지므로 코드가 깔끔해짐

 

AOP 용어 정의

  • Advice
    • aspect가 해야 할 작업
    • aspect가 'what'을 'when'할지를 정의함.
    • 'what' : 메소드 호출 이전 or 이후, 이전/이후, 메소드 예외
      → Before, After, After-returning(성공적 완료 이후), After-throwing(예외), Around(호출 전/후 모두)
  • Join point
    • advice를 적용할 수 있는 곳, Appl. 실행에 aspect를 끼워 넣을 수 있는 point
  • Pointcut
    • aspect가 advice할 join point의 영역을 좁히는 일을 함
    • aspect가 'where'할지를 정의함.
  • Aspect
    • advice와 pointcut을 merge한 것.
    • 두 가지 정보가 합쳐지면, aspect가 what을 when, where할지 정의됨.
  • Introduction
    • 기존 클래스에 코드 변경 없이도 새 메소드나 멤버 변수를 추가하는 기능
  • Weaving
    • 타깃 객체에 aspect를 적용해서 새로운 proxy 객체를 생성하는 절차
    • asepect는 target 객체의 joint point로 weaving된다.

 

728x90
반응형