您需要使用@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
多数民众赞成在不好:(希望我可以帮你在这里...祝你好运! –