【问题标题】:Performance impact of logging using Spring AspectJ使用 Spring AspectJ 进行日志记录的性能影响
【发布时间】:2014-12-05 11:55:05
【问题描述】:

我们正在开发一个 Web 应用程序,我们在其中记录 DAO 类中所有数据库调用的输入和输出。一个例子是:

@Override
public List<Long> findUsers(final List<Long> userIds) {
    LOGGER.info("findUsers: finding user ids  by  followeeId {} ", userIds);
    ... // hibernate DB call
    LOGGER.info("findUsers: number of ids  founds are {}", userIdList.size());  

这段代码会出现在所有的 DAO 类中,这样的类的数量在 100 左右,而且可能会更多。

我的问题是我们应该继续以相同的方式记录信息还是我们应该去实现 Spring-AspectJ? - 我们将为所有此类方法定义@Before@After 的方面。这方面会调用 logger 并记录所需的信息。

实施 Spring-AspectJ 会影响性能吗?任何指针表示赞赏。

我已经完成了以下 SO 问题,但需要更清楚地了解上面引用的示例。

【问题讨论】:

    标签: java spring aspectj spring-aop


    【解决方案1】:

    使用 AOP 会给您带来小的性能损失,具体程度取决于您应用 AOP(代理或编织)的方式以及您在方面所做的工作。我建议使用 Springs CustomizableTraceInterceptor 或者如果您也有兴趣(或者对性能更感兴趣,AbstractMonitoringInterceptor 的子类之一可以节省您自己的实现。

    我不会以您的方式登录,因为它很容易忘记,如果您想更改某些内容(或禁用日志记录),您必须更改这 100 个类而不是 1 个或仅更改配置。

    【讨论】:

      【解决方案2】:

      如果您使用的是 sping aop,它会降低您的性能,此外,如果您将 spring 与 aspectj 一起使用,它的性能会更好,以便在此处进行更多检查 http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/aop.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 2013-11-01
        • 1970-01-01
        • 2017-12-20
        • 2019-02-09
        相关资源
        最近更新 更多