记录用户在Spring MVC中的操作

Gab*_*tin 4 spring spring-mvc

我有一个用Spring MVC编写的非常大的应用程序.我想保留一个"活动记录",跟踪用户在我的应用程序中执行的操作.

在第一阶段我只想要一个活动日志,它可以只是在用户操作期间调用的控制器方法的列表,但稍后我希望这个信息更"人类可读",即代替"modifyAccount"( accountId = 5,accountBalance = 500)类似"用户X更新帐户5到500的余额".

我看到的问题是,由于我的应用程序非常大,我不想修改我的每个操作来添加此日志记录机制.是否有更灵活,声明性的方式来做到这一点?

Bar*_*art 9

您可以使用面向方面编程(AOP)来自动化日志记录.

http://static.springsource.org/spring/docs/2.0.8/reference/aop.html

在上面的页面中显示了有关如何在弹簧上使用AOP的许多示例.一个例子是使用注释来查找您感兴趣的方法.使用这样的注释是确定应记录哪些方法的简单方法.

@Audit注释

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Auditable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

审计方法

@After("@annotation(auditable)", argNames="joinPoint")
public void audit(JoinPoint joinPoint) {
    logger.info("Called {} with arguments {}", 
        joinPoint.getSignature().getLongString(), joinPoint.getArgs());
}
Run Code Online (Sandbox Code Playgroud)

我没有测试这段代码,但它得到了重点.