메소드의 모든 실행과 일치하는 pointcut을 작성하여 혼란 스럽습니다. 내 충고는 -instance 메인 프로그램이 Beta
에 alphaMethod
를 호출하면 다음과 같은 클래스 hierachy상속을 통한 pointcut 혼란
public class Alpha {
public void alphaMethod() {...}
}
public class Beta extends Alpha {
public void betaMethod() {
alphaMethod();
}
}
와
execution(* Alpha.*(..))
: 나는 클래스 Alpha
의 모든 메소드 실행을 일치해야합니다 포인트 컷을 시도 예상했던대로 호출하지만 Main 프로그램은 betaMethod
을 호출하여 내 조언에 alphaMethod
이라는 콜을 호출하지 않으며 그 이유를 이해하지 못합니다.
화면-정의 :
@Aspect
public class MyAspect {
@Before(value = "execution(* Alpha.*(..))", argNames="joinPoint")
public void myAdvice(JoinPoint joinPoint) {
System.out.println("BEFORE: " + joinPoint.getSignature());
}
}
홈페이지-방법이 예상되는
Beta beta = ...;
beta.alphaMethod(); //advice is called
beta.betaMethod(); //advice is NOT called.
이 문제는 여전히 예상되지만 프록시를 사용하면이 문제가 발생합니다. 고마워! – thomas
@darrengorman은 상속 된 메소드를 포함하도록 Spring에 알려줄 수있는 방법이 있습니까? –