[Spring] AOP

AOP


AOP란

  • OOP를 지향하는 프로그래밍 기술
  • 클래스 로직에서 부가기능을 분리함으로써 핵심기능을 설계 및 구현시 객체지향적인 가치를 지킬 수 있도록 한다
  • 즉 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델이다

스프링의 AOP

  • POJO 프로그래밍을 지원하기 위한 목적을 가지고 있다
  • 다이나믹 프록시 방식의 AOP로 접근 제어와 부가기능 추가 등의 다양한 목적을 붙힐 수 있다
  • 스프링 빈에만 AOP를 적용 가능하다
  • 런타임에 어드바이스를 삽입한다

AOP 용어

타깃

  • 부가기능을 부여할 대상

어드바이스

  • 부가기능을 담은 모듈
    1
    2
    3
    4
    5
    6
    @Before  
    @After
    @AfterReturning
    @After
    @AfterThrowing
    @Around

조인 포인트

  • 어드바이스가 적용될 위치
  • 스프링 AOP의 조인 포인트는 메소드의 실행 단계이다

포인트 컷

  • 포인트 컷을 통해 특정 메소드들에 한정하여 다른 부가 기능을 설정할 수 있다

프록시

  • 클라이언트와 타킷 사이에 존재하며 부가기능을 제공하는 오브젝트
  • DI를 통해 카깃 대신 클라이언트에게 주입되며 클라이언트의 메소드 호출을 받아 타깃에 위임하며 부가기능을 부여한다

어드바이저

  • 포인트컷과 어드바이스를 하나씩 갖고 있는 오브젝트
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/06/14/Spring/AOP/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.