포인트 커트를 이용한 조인 포인트 선택
스프링은 AspectJ에서 사용할 수 있는 포인트 커트 지정자에 속하는 것만 지원한다.
AspectJ 지정자 |
설명 |
args() |
인자가 주어진 타입의 인스턴스인 조인 포인트 매칭을 정의한다. |
@args() |
전달된 인자의 런타임 타입이 주어진 타입의 어노테이션을 갖는 조인 포인트 매칭을 정의한다. |
execution() |
메서드 실행 조인 포인트와 일치시키는 데 사용된다. |
this() |
AOP 프록시의 빈 레퍼런스가 주어진 타입의 인스턴스를 갖는 조인 포인트를 정의한다. |
target() |
대상 객체가 주어진 타입을 갖는 조인 포인트를 정의한다. |
@target() |
수행 중인 객체의 클래스가 주어진 타입의 어노테이션을 갖는 조인 포인트를 정의한다. |
within() |
특정 타입에 속하는 조인 포인트를 정의한다. |
@within() |
주어진 어노테이션을 갖는 타입 내 조인 포인트를 정의한다. (스프링 AOP를 사용할 때 주어진 어노테이션을 사용하는 타입으로 선언된 메서드 실행) |
@annotation |
조인 포인트의 대상 객체가 주어진 어노테이션을 갖는 조인 포인트를 정의한다. |
AspectJ의 다른 지정자를 사용하면 IllegalArgumentException이 발생한다.
excution 지정자만 실제로 일치시키는 작업을 수행하며, 다른 지정자는 일치를 제한하는데 사용된다.
포인트 커트 표현식은 다음과 같다.
메서드 실행 시작 + 메서드 명세(리턴타입 + 메서드 소속 + 메서드명 + 매개변수)
execution (* package.Class.method(..))
표현식 안에서 빈 네임도 이용할 수 있다.
execution(bean('itsBeanName'))
|
이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다. 일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다. |
'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글
@Around (0) | 2018.05.26 |
---|---|
애스펙트 정의하기 (0) | 2018.05.26 |
AOP란? (0) | 2018.05.24 |
조건부 빈 (0) | 2018.05.21 |
XML로 빈 와이어링하기 (0) | 2018.05.07 |