2011-11-24 1 views
2

기본 클래스가 확장 된 파생 클래스가 여러 개 있습니다. Spring AOP Aspect를 수퍼 클래스로만 제한하여 AOP 프록시가 파생 클래스가 아닌 AOP 프록시로 만 만들도록하고 싶습니다.Spring AOP - 파생 클래스가 목표가되지 않도록하는 방법

@Pointcut("execution(* com.blah.platform.persistence.generic.GenericDaoImpl.*(..))") 
public void withinGenericDao() {} 

을 GenericDaoImpl는 슈퍼 클래스입니다 :

나는 다음과 같이 포인트 컷을 정의하기 위해 노력했다.

난 아직도 프록시가 아니라 파생 클래스에 대해 생성되는 것을 볼 수 있습니다

:

execution(public * com.mycompany.myservice.MyService+.*(..)) 

하나를 : 나는 포인트 컷 정의 할 때 다음과 같이 만 발생한다고 생각

2011-11-24 18:00:28,616 ContainerBackgroundProcessor[StandardEngine[Catalina]] DEBUG [JdkDynamicAopProxy] Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [[email protected]] 
2011-11-24 18:00:28,638 ContainerBackgroundProcessor[StandardEngine[Catalina]] DEBUG [JdkDynamicAopProxy] Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [[email protected]] 
2011-11-24 18:00:28,645 ContainerBackgroundProcessor[StandardEngine[Catalina]] DEBUG [JdkDynamicAopProxy] Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [[email protected]] 
2011-11-24 18:00:28,953 ContainerBackgroundProcessor[StandardEngine[Catalina]] DEBUG [JdkDynamicAopProxy] Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [[email protected]] 
2011-11-24 18:00:29,030 ContainerBackgroundProcessor[StandardEngine[Catalina]] DEBUG [JdkDynamicAopProxy] Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [[email protected]] 

아이디어?

답변

0

PointCut 정의를 execution에서 within으로 변경할 수 있습니까? 나는 과거에 성공했다. (구문은 조금 다르다. 자세한 내용은 Spring AOP 참조 문서를 참조하십시오.)

예 : @PointCut("within(com.blah.platform.persistence.generic.GenericDaoImpl)")

+0

네, 그렇습니다. 고마워요! – vladiu

0

하위 클래스는 부모 클래스의 공용 메서드와 속성을 상속하며 주석을 포함합니다.