2011-11-27 63 views
2

我有以下類:Spring AOP的setAdvice只在一個特定的方法

package x.y.z; 

public class MyClass{ 
public void someMethod(SomeObject object){ 
//do somethinng 
} 

public void { 
//do somethinng 
} 

} 

現在我想設置@PointCut只方法someMethod(SomeObject object, int param1)

我該怎麼辦呢?

更新我想

@Pointcut("execution(x.y.z.MyClass.someMethod(x.y.z.SomeObject))") but I'm getting not well formed pointcut exception. 
+0

難道你不能只是明確命名的切入點名稱而不是使用通配符? –

+0

@Dave,我該怎麼辦?這正是我的問題 –

回答

4

切入點應該是:

target(x.y.z.MyClass) && execution(<RETURN TYPE> someMethod(x.y.z.SomeObject)) 
3

連接的AspectJ到類路徑和使用Maven插件AOP編譯這方面爲字節碼,看看下面這個例子:

@Aspect 
public class IOControlAspect { 
    @Around("execution(com...SomeClass.someMethod(*))") 
    public Object ioControlWrapper(ProceedingJoinPoint thisJoinPoint) throws Throwable { 
     {your code here} 
     return thisJoinPoint.proceed(); 
    } 
} 
+0

不錯,但它會執行哪些方法我有相同的名稱和不同的參數的方法。 –

+1

它確定,你可以使用執行(com ... SomeClass.someMethod(int,java.lang.String等))來指定參數 –

+0

我不記得Spring AOP是否支持這種表示法,但AspectJ可以使用它。 –