2016-07-21 10 views
1

Superを拡張する異なるパッケージから複数のクラスがあります。 そして、私はそれを囲むAOPのポイントカットを、すべてのクラスの中でSuperを拡張するすべてのメソッドにしたいと思っています。 私はこれを試しました:特定のクラスを拡張するすべてのクラスに対して単一のpointcutを指定する方法

@Around("within(com.mypackage.that.contains.super..*)") 
public void aroundAllEndPoints(ProceedingJoinPoint joinPoint) throws Throwable { 
     LOGGER.info("before Proceed "); 
     joinPoint.proceed(); 
     LOGGER.info("after Proceed"); 
} 

しかし、それは動作しません。 提案がありますか?

答えて

1

ポイントカットは次のようになります。

within(com.mypackage.Super+) 
com.mypackage.Superは、完全修飾基本クラス名で

+は、「すべてのサブクラス」を意味します。これはSpring AOPで動作します。 AspectJでは、メソッドの実行だけでなく、あまりにも多くのjoinpointと一致します。 Spring AOPとAspectJの両方で動作する別のポイントカットがあります:

execution(* com.mypackage.Super+.*(..)) 
関連する問題