6.1.1 개념들 by ys
Spring의 포인트 컷 모델은 advice 유형과 상관없이 pointcut 재사용을 가능하게한다. 동일한 포인트 컷을 사용하여 다른 advice 을 타겟팅 할 수 있습니다.
- 위빙 (Weaving) : 보조업무가 프록시(Proxy)를 통해서 주 업무에 주입되는 것. 즉, 타깃 객체에 애스펙트를 적용해서 새로운 프록시 객체를 생성하는 절차.
- 조인포인트 (Joint Point) : 위빙하게 되는 함수. 그 지점.
- 포인트 컷 (PointCuts) : 객체의 특정 함수만 조인포인트 역할을 하도록 하는 것.
org.springframework.aop.Pointcut
인터페이스는 특정 클래스 및 방법에 관한 advice를 타겟팅하는데 사용되는 핵 인터페이스이다. 전체 인터페이스는 다음과 같습니다.
Pointcut
인터페이스를 두 부분으로 나누면 클래스 및 메소드 맞는 부분을 재사용 할 수 있고 세밀한 구성(composition)작업 (예 : 다른 메소드 매처(matcher)와 함께 "union"수행)을 허용합니다.
포인트컷을 주어진 대상 클래스의 세트로 제한할 때 ClassFilter
인터페이스를 사용한다. matches()
메서드가 항상 true를 반환하면 모든 클래스에 매칭될 것이다.
다음 목록은 ClassFilter
인터페이스 정의를 보여줍니다 .
pointcut 인터페이스를 쉽게 재사용하고 구성하기 위해 두부분으로 나누었다는 말.
true를 반환하는 메소드에만 매칭될 거라는 말. 그걸 걸러내는 역할.
MethodMatcher
가 보통은 더 중요하다. 전체 인터페이스가 아래 나와 있다.
이 포잇트컷이 대상 클래스의 해당 메서드에 매칭될 것인지를 테스트할 때 matches(Method, Class)
메서드를 사용한다. 메서드 호출시마다 테스트가 필요한 경우를 피하려고 AOP 프락시를 생성할 때 이 평가를 수행할 수 있다. 2개의 인자를 가진 matches
메서드는 해당 메서드에 true
를 반환하고 MethodMatcher의isRuntime()
메서드가 true를 반환한다면 3개의 인자를 가진 matches 메서드는 메서드 호출시마다 호출될 것이다. 대상 어드바이스가 실행되기 전에 메서드 호출에 전달된 인자를 바로 보고 포인트컷을 활성화한다.
대부분의 MethodMatcher
는 정적이라서 MethodMatcher의 isRuntime()
메서드는 false
를 반환한다. 이 경우 3개의 인자를 가진 matches
메서드는 절대 호출되지 않는다.
TIP | 가능하다면 포인트컷을 정적으로 만들어서 AOP 프레임워크가 AOP 프락시를 생성할 때 포인트컷 평가 결과를 캐시하도록 해라. |
필요가 없어도 포함되는것을 정적이라고하고 필요가 없을 때는 포함이 되지 않고 필요할때 포함되는 것을 동적
Last updated