AOP

어겐어갠·2022년 4월 14일
0

Aspect Orient Programming 관점 지향 프로그래밍

관심사(공통 로직)을 모아 실행한다고 생각하면 될것같다.
횡단 관심사(cross-cutting concern)의 분리를 허용하여 모듈성을 증가시킨다.
관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리

AOP 적용 방법

  • 컴파일 시점 -> AspectJ framework
  • 클래스 로딩시점
  • 런타임 시점 -> Spring에서 Proxy를 통해 제공한다.
    interface 기반은 JDK, class 기반은 CGlib

AOP 용어

Target, 타겟 : 핵심 기능을 담고있는 모듈, 대상 = 객체(클래스)
JoinPoint, 조인포인트 : 어드바이스가 적용될 위치 = 타겟 객체가 구현한 모든 메서드
Advice, 어드바이스 : 제공할 부가기능
PointCut, 포인트컷 : 어드바이스를 적용할 타겟을 선별하는 정규표현식
Aspect, 에스팩트 : PointCut + Advice. 스프링에서는 빈으로 등록해서 사용
Weaving, 위빙 : 포인트컷에 의해 결정된 타겟의 조인포인트에 어드바이스를 삽입하는 과정.

Spring AOP

  • 프록시 기반
  • Runtime때 프록시를 생성
  • 프록시가 타겍 객체에 대한 호출을 가로챈(Intercept) 후에 어드바이스의 부가기능을 수행 후 타겟 객체의 로직이 실행, 그 이후 어드바이스가 실행된다.
  • 메서드 조인포인트만 지원한다.

Spring AOP의 구현방식

  • XML 기반 POJO 클래스를 이용한 구현
  • @Aspect 어노테이션을 이용한 구현

Advice의 종류

  • Around
    JoinPoint 전, 후처리
  • Before
    JoinPoint 전처리
  • Atter Returning
    JoinPoint 메서드 호출이 정상적으로 종료된 이후 후처리
  • After Trowing
    타겟의 메서드에서 예오가 발생할 경우에 후처리

https://shlee0882.tistory.com/206

profile
음그래

0개의 댓글