java - 在Spring MVC应用程序中不使用AOP记录数千个方法的入口和导出

标签 java spring logging log4j spring-aop

我尝试过Spring AOP + log4j,但由于我的目的是在每个现有方法中记录方法入口+退出时间和一些其他信息,它对性能影响很大,所以我不得不删除AOP代码并寻找替代解决方案。有没有其他方法可以轻松提高性能?我的最后一招是创建一个工具来扫描所有代码并在所有方法中添加日志记录代码,但这最终会导致代码困惑并且变得难以维护。任何意见将不胜感激。

最佳答案

正如 Betlista 所说:如果您想对应用程序中的所有方法调用进行计时并内联代码,您真的认为这会更快吗?你为什么要这么做?如果您想找到瓶颈,只需运行采样分析器即可。

但为了避免 Spring AOP 动态代理带来的不可否认的开销并获得与内联所有语句类似的性能,我建议使用 AspectJ via LTW (load-time weaving) 。如果您通过 AspectJ Maven 插件使用 CTW(编译时编织),您甚至可以在应用程序启动期间摆脱 LTW 性能损失。

不要忘记医生所说的:剂量决定了良药与毒药的区别。因此,即使使用 AspectJ,也只记录/记录您需要的内容以及为您提供所需见解的内容,而不是盲目地执行所有操作。

关于java - 在Spring MVC应用程序中不使用AOP记录数千个方法的入口和导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748966/

相关文章:

java - 在 Java 构造函数中使用 'this' 关键字

spring - 使用 Spring 在 CXF 中配置多个 resouceBean

mysql - 日志表的数据库索引

Python:警告和日志记录详细限制

安卓错误记录

Java:有符号长到无符号长字符串

java nio 在符号链接(symbolic link)中迭代文件

java - JDK9 和 maven-jar-plugin

spring - 使用 Spring JmsMessagingTemplate 的自定义 MessageConverter 未按我的预期工作

javascript - Java:使用 JavaScript 上传图像 - 文件损坏、损坏或太大