在下面的示例中进行了尝试,但不适用于spring。在编辑器中出现“ Spring不支持调用切入点指定符”的错误提示。
https://dzone.com/articles/enforcing-common-log-format
任何代码示例都将不胜感激。
答案 0 :(得分:0)
有很多方法可以做到这一点,这里是1。
1)创建注释以添加到需要添加日志记录的类/方法:
@Documented
@Target(ElementType.METHOD)
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface LogExecution {
}
2)创建一个方面来进行日志记录:
@Aspect
@Component
public class LogAspect {
private List<String> messages = new ArrayList<>();
@Around("@annotation(hello.LogExecution)")
public Object handelLogging(ProceedingJoinPoint joinPoint) throws Throwable {
Object proceed = null;
try {
// log before
proceed = joinPoint.proceed();
// log after
}
catch (Exception e) {
// log exception
throw e;
}
return proceed;
}
}
工作示例here
答案 1 :(得分:0)
听起来您没有正确配置AspectJ。
有关正确设置,请参见此问题的答案:
Spring + AspectJ weaving for java 8 using aspectj-maven-plugin
在那之后,spring应该认识到您的切入点
答案 2 :(得分:0)
如手册所述,在Spring应用程序中使用AspectJ的规范方法是使用AspectJ load-time weaving (LTW)。将代码织入Spring或Java EE二进制文件并创建新的JAR等是没有意义的,因此,如果要定位第三方代码,则IMO源代码或二进制编译时织法不是一种选择。相反,我在上面的手动章节中介绍了动态Java编织代理。
话虽如此,这只是对我在此处阅读的与AOP相关的建议的答复。它将按照我描述的方式工作,但是我很高兴OP通过映射诊断上下文解决了他的问题。