2023-10-20: AOP & Proxy

대휘·2023년 10월 23일
0

TIL

목록 보기
10/11

AOP (Aspect-of-programming)

프로그램의 횡단 관심사를 분리하는 프로그래밍 기법. 프로그램의 공통 관심사항(cross-cutting-concern)을 비즈니스 로직에서 분리시켜 한 번에 처리할 수 있도록 하는 방법이다.

AOP 적용 방법

  1. 컴파일 시점
    1. AspectJ
    2. 소스코드를 컴파일 하기 전에 공통구현코드를 소스에 삽입
  2. 클래스 로딩 시점
    1. 클래스를 로딩할 때, 바이트코드에 부가기능을 삽입
  3. 런타임 시점
    1. 스프링에서 제공하는 AOP 방식
    2. Proxy를 이용해서 부가기능이 동작하도록 구현
      1. JDK Proxy (interface based)
      2. CGLib Proxy (class based)

AOP 주요 용어

  • 타겟 (Target)
    - 핵심기능을 담고있는 모듈(클래스)로서 부가기능을 부여할 대상
  • 조인 포인트 (Join Point)
    - 타겟 객체가 구현한 인터페이스의 모든 메서드
    - 어드바이스가 적용될 수 있는 위치
  • 포인트 컷 (Pointcut)
    - 어드바이스를 적용할 타겟 메서드를 선별하는 정규표현식
  • 어드바이스 (Advice)
    - 조인포인트에 적용될 부가기능
    - @Before, @After, @Around, @AfterReturning, @AfterThrowing
  • 에스펙트 (Aspect)
    - 포인트 컷 + 어드바이스 => 에스펙트
  • 위빙 (Weaving)
    - 조인포인트에 어드바이스를 부여하는 과정
profile
학생

0개의 댓글