2011-11-24 12 views
2

私はそれを拡張するいくつかの派生クラスを持つ基本クラスを持っています。 Spring AOP Aspectをスーパークラスのみに制限して、派生クラスではなくAOP Proxyを作成するようにします。Spring AOP - 派生クラスがターゲットにされないようにする方法

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

をGenericDaoImplスーパークラスである:

私は次のようにポイントカットを定義しようとしました。

私はまだプロキシが、同様の派生クラス用に生成されていることがわかります。

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]] 

私は次のようにポイントカットが定義されている場合にのみ起こるべきであると思うだろう:

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

どれでもアイデア?

答えて

0

PointCutの定義をexecutionからwithinに変更できますか?私は過去にそれを成功させました。 (構文は少し異なります。詳細については、Spring AOPのリファレンスドキュメントを参照してください)。

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

+0

はい、これは動作するようです。どうもありがとう! – vladiu

0

サブクラスは、親クラスのパブリックメソッドとプロパティを継承し、アノテーションも含めます。

関連する問題