AOP 용어 정리

see1237·2022년 8월 17일
0

Section2

목록 보기
8/10

AOP(Aspect Oriented Programming)

OOP 방식의 프로그래밍을 했을 때 여러 곳에서 공통적으로 사용되는 부가 기능의 중복 코드가 발생하게 된다.
-> 관심 지향 프로그래밍(AOP)은 OOP 방식의 불필요한 반복을 해결하기 위한 방법이다. (핵심 기능과 부가 기능을 분리)

애스팩트(Aspect)

  • 여러 객체에 공통적으로 적용되는 기능을 의미한다. (어드바이스 + 포인트컷)

어드바이스(Advice)

  • Aspect를 언제 핵심 코드에 적용할 지를 정의한다.
  • 조인포인트에서 수행되는 코드를 의미한다.
  • 종류
    • Before Advice, After Returning Advice, After Throwing Advice, After Advice, Around Advice
      -> 이 중 널리 사용되는 것은 Around Advice이다.
      (대상 객체의 메서드를 실행 전, 후 또는 익셉션 발생 시점 등 다양한 시점에 원하는 기능 삽입 가능)
    • @Around의 경우 반드시 proceed() 메소드가 호출되어야 한다. proceed() 메소드는 타겟 메소드를 지칭하기 때문에 proceed 메소드를 실행시켜야만 타겟 메소드가 수행이 된다.

조인 포인트(join point)

  • Advice를 적용 가능한 지점들을 의미한다.
  • 스프링 AOP는 프록시 방식을 사용하므로 조인 포인트는 항상 메소드 실행 지점으로 제한된다.
  • JoinPoint 메소드는 어드바이스의 종류에 따라 사용방법이 다소 다르지만 기본적으로 어드바이스 메소드에 매개변수로 선언만 하면 된다.

포인트컷(Pointcut)

  • 조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능
  • AspectJ 표현식을 사용해서 지정한다.

타겟 (Target)

  • 핵심 기능을 담고 있는 모듈로, 타겟은 부가기능을 부여할 대상이 된다.
  • Adivce를 받는 객체이고 포인트컷으로 결정된다.

위빙(Weaving)

  • 포인트컷으로 결정한 타겟의 조인 포인트에 어드바이스를 적용하는 것
  • 지정된 객체에 애스팩트를 적용해서 새로운 프록시 객체를 생성하는 과정
  • AOP 적용을 위해 애스펙트 객체에 연결한 상태

AOP 프록시(proxy)

  • 핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체
  • 타겟을 감싸서 타겟의 요청을 대신 받아주는 랩핑(Wrapping) 오브젝트
  • AOP에서 프록시는 호출을 가로챈 후, 어드바이스에 등록된 기능을 수행 후 타겟 메소드를 호출한다.

0개의 댓글