2014-10-10 361 views
0

我们正在开发一个Web应用程序,在该应用程序中记录DAO类中所有数据库调用的输入和输出。一个例子是:使用Spring进行日志记录对性能的影响AspectJ

@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定义一个方面。这方面将调用记录器并记录所需的信息。

执行Spring-AspectJ会是一个性能问题吗?任何指针赞赏。

我已经通过了下面的SO问题,但需要一些关于上面引用的例子更加清晰。

回答

2

更好使用AOP会给你一个小的性能损失,多少取决于你如何应用AOP(代理或编织)以及你在你的方面做了什么。我建议使用弹簧CustomizableTraceInterceptor或者如果你也有兴趣(或更有兴趣的表现AbstractMonitoringInterceptor的子类节省您实现自己的。

我不会登录的方式,因为它很容易忘记,如果你想改变一些东西(或禁用日志记录),你必须改变这些100个类而不是1个或只是配置。

相关问题