AOP가 뭔디? 용어편

상트리버·2022년 12월 27일
0

Spring 이론

목록 보기
23/23

AOP가 뭔디?

  • AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다.
  • 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다.
    *모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.
    핵심적인 관점은 비즈니스 로직이 될 수 있다
    부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있다.
    [Spring] AOP가 뭔디?

일단 덤벼 보자 용어편

AOP에는 그들만의 용어가 있다!!

Pointcut : Join Point의 상세한 스펙을 정의한 것. "A란 메서드의 진입 시점에 호출할 것"처럼 구체적으로 Advice가 실행될 시점을 정함.
Advice : 실질적으로 어떤 일을 해야 할 지에 대한 것, 실질적인 부가기능을 담은 구현체
JoinPoint : Advice가 적용될 위치 혹은 끼어들 수 있는 시점.
스프링에서 Join Point는 언제나 메서드 실행 시점을 의미 한다.
Aspect : 여러 개의 Advice와 여러 개의 Pointcut의 결합체를 의미
Advisor : Aspect를 적용하는 곳. 클래스, 메서드 등..

[Spring] 프록시란?

1. Pointcut - 자르는 지점? Aspect 적용 위치 지정자!

  • 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트 중에 특정 메소드에서만 횡단 공통기능을 수행시키기 위해서 사용한다.
    표현식 : 리턴타입 패키지경로 클래스명 메소드명(매개변수)

AspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공
@Pointcut("execution( hello.aop.order..(..))")

pointcut 지시자

일반적인 pointcut 표현식들






2. 조인포인트(Joinpoint) 자르는 지점? Aspect 적용 위치 지정자!

  • JoinPoint는 Spring AOP 가 적용되는 지점을 뜻한다.

그중에서, Spring AOP에서 사용되는 조인 포인트는 항상 메소드 호출을 의미합니다. 따라서 사용할 수 있는 포인트 컷의 표현 식으론 메소드 패턴을 지원하는 표현 식만을 사용할 수 있습니다.

스프링 AOP는 프록시 방식을 사용하여 조인포인트가 항상 메서드의 실행 지점으로 제한된다.


3. Advice - 조언? 언제, 무엇을!

  • pointcut에 언제, 무엇을 적용할지 정의한 메서드!
  • Aspect를 언제 핵심 코드에 적용할지 정의
  • 시스템 전체 Aspect에 API 호출 제공


4. Aspect - 관점? 측면? Advisor의 집합체

  • AOP에서 Aspect는 여러 개의 Advice와 여러 개의 Pointcut의 결합체를 의미
  • Aspect = Advice들 + Pointcut들

5. Advisor - 조언자? 어디서 언제 무엇을?

  • Advisor 는 스프링 AOP에서만 사용하는 용어이다
  • 조인 포인트에서 수행되는 코드를 의미
  • Aspect를 언제 핵심 코드에 적용할지 정의
  • 스프링의 버전이 올라가면서 쓰지 말라고 권고하는 기능이라고함

0개의 댓글