您需要使用@Around
意見。這裏定義切入點,使得包的每個類和方法都被覆蓋/攔截。請參閱下面示例 -
@Aspect
public class AllMethodLogging {
@Around(execution("* com.x.y..*.*(..)"))
public Object intercept(ProceddingJoinPoint pjp){
String name = pjp.getSignature().getName();
try {
logger.info("started " + name);
Object obj = pjp.proceed();
logger.info("finished " + name + " successfully");
return obj;
} catch (Throwable t) {
logger.error(name + " finished with Exception - " + t.getMessage());
throw t;
} finally {
// do some more logging if required else skip
}
}
}
切入點execution("* com.x.y..*.*(..)")
意味着com.x.y
包中的任何方法,它的子包,所有的知名度應該由這個建議被截獲。
請參閱文檔here以獲取更多示例來根據您的需要定製您的切入點。
即使我不同意但不得不遵循,我沒有使用aspectj的一些愚蠢的理由。 – Atom
多數民衆贊成在不好:(希望我可以幫你在這裏...祝你好運! –