我使用Spring AOP进行日志服务,遇到了3个问题:
1.内部方法记录:参考代码:How to Log all the methods public method calls in AOP
1.要在代理中包含final方法:遵循pmd、checkstyle和findbugs中提到的代码标准,我们不能更改方法的final关键字。我尝试了interface和connecting到调用,但都不起作用。
1.处理异常,然后返回到服务本身以获得实际响应
@RestController("/person")
public Person getpersonInfo() {
try {
// (...)
getValidPerson();
return response; // response including person info
}
catch (Exception ex) {
return response; // response stating the exception condition
}
}
请附上您的宝贵意见。
1条答案
按热度按时间5kgi1eie1#
1.如果您正在讨论自调用,例如
this.someOtherMethod()
(没有this.
也是一样),那么它将不起作用,因为您没有使用代理,因此您可以配置Spring来公开代理对象,并在调用代理方法之前手动获取对代理的引用,或者您可以从Spring AOP切换到具有加载时编织的AspectJ。1.从技术上讲,代理在运行时生成一个子类。但是final类不能被扩展,final方法不能被覆盖。因此,你不能用代理来处理它们。同样,如果你认为你需要这样做,切换到完整的AspectJ。
1.这可以在
@Around
通知中完成,如下所示: