새소식

인기 검색어

Programming/Computer Science

AOP

  • -
AOP란?
AOP : Aspect Oriented Programming, 관점지향 프로그래밍

PP -> OOP -> AOP 순으로 발전했으며, AOP는 왼쪽 순서처럼 OOP를 더욱 발전시키기 위한 개념이다.

하나의 소프트웨어가 거대한 OOP로써 설계 및 프로그래밍되었다면 이것을 기능별로 분리를 시키는 개념이다.

즉, 공통된 요소를 추출해 이를 모듈화하는 것을 의미한다.

 

장점

  • 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리된다.
  • 다른 서비스 모듈들이 다른 사항들을 신경쓰지 않도록 해준다.
  • 이를 통해, 개발자는 핵심로직에만 집중할 수 있도록 한다.
  • 중복 코드 제거 / 효율적인 유지보수 / 높은 생산성 / 재활용성 극대화 / 변화수용에 용이하다.

 

AOP의 구성 요소


JointPoint

  • 관점(Aspect)를 삽입하여 어드바이스가 적용될 수 있는 위치를 의미한다.
  • method를 호출하는 시점, 예외가 발생하는 시점 등과 같이 특정 작업이 실행되는 시점을 의미하기도 한다.

 

PointCut

  • 어드바이스를 적용할 조인 포인트를 선별하는 과정이나 그 기능을 정의한 모듈을 의미한다. 패턴매칭을 이용하여 어떤 조인포인트를 사용할 것인지 결정한다.

Aspect

  • JointPoint + PointCut
  • 구현하고자 하는 횡단 관심사(로깅, 트랙잭션, 권한)의 기능을 의미한다.
  • 한개 이상의 PointCut과 Advice의 조합으로 만들어진다.

 

Advice

  • 관점(Aspect)의 구현체로 Join Point에서 실행되어야 하는 코드(실제로 AOP 기능을 구현한 객체)
    어드바이스는 Join Point와 결합하여 동작하는 시점에 따라 5개로 구분된다.

    - Before Advice

    - After returning Advice

    - After throwing Advice

    - After advice

    - Around advice


Target

  • 어드바이스를 받을 대상, 즉 객체를 의미한다. 비즈니스로직을 수행하는 클래스일 수도 있지만, 프록시 객체(Object)가 될 수도 있다.


Weaving

  • Aspect + Advice. 위빙을 통해 지정된 객체를 새 Proxy 객체로 생성한다.

 

Proxy 

  • 횡단 관심(Crosscut Concern)이 핵심 관심(Core concern)에서 직접 실행되지 않고 Proxy(대리인)을 생성해 실행된다. 

'Programming > Computer Science' 카테고리의 다른 글

OOP  (0) 2022.12.15
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.