我正在尝试在旧的Java / JSP Web应用程序中进行一些日志记录,并且我决定最好使用AOP来实现这一目的。我陷入了一个问题,我的新LoggingAspect类中的所有内容看起来都很好,但是没有调用通知方法。
为了使这个问题更令人困惑,在同一包中使用相同方法使用其他一些较旧的使用AspectJ的类执行其他操作的效果很好,当我尝试将其切入点复制到我的类时,它们在那里工作也是
让我感到沮丧的另一件事是IntelliJ IDEA的“导航到建议方法”功能,用于列出当前切入点建议的方法,当我更改切入点时,它总是正确列出建议的方法,但建议建议的方法调用时,方法仍然不会被调用。
为什么会这样?为什么IDE会正确评估建议的方法,但在运行时未调用它们?我该如何工作?
@Component
@Aspect
public class LoggingAspect {
private Logger logger = LoggerFactory.getLogger(getClass());
// This works fine
// @Around("execution(* cz.company.mbs.json.services..*.*(..))")
// This doesn't for some reason, but I need it
@Around("execution(* cz.company.mbs.pda.controller..*.*(..)))")
public Object logAllRequestMapped(ProceedingJoinPoint joinPoint) throws Throwable {
logger.info("XXXTEST");
logger.info(joinPoint.getSignature() + " started");
Object proceed = joinPoint.proceed();
logger.info(joinPoint.getSignature() + " finished");
return proceed;
}
}