在日常开发中经常需要在代码中加入一些记录用户操作日志的log语句,比如谁在什么时间做了什么操作,等等。
把这些对于开发人员开说无关痛痒的代码写死在业务方法中实在不是一件很舒服的事情,于是AOP应运而生。
Spring对AOP的支持有以下4种情况:
1.基于代理的AOP
2.@Aspectj
3.纯POJO
4.注入式Aspectj切面
前三种都是基于方法级的,最后一个可以精确到属性及构造器。
关于Spring对AOP的支持的详细内容,读者可以参考《Spring in Action (第二版)中文版》第四章。
我这里使用的是第三种,纯POJO的方式,这种方式仅能在spring2.0及以后的版本中使用。
ok,言归正传,还是来说一说方法级注解的日志配置方式吧,顾名思义,就是只需要在方法上增加一个注释就可以自动打印日志,所以首先需要创建一个注 解,如下:
这里只是抛砖引玉,读者可以根据需要建立自己的注解。
有了注解,之后就需要在方法被调用时能解析注解,这就用到了SpringAOP的通知,我这里使用MethodBeforeAdvice,就是在方 法被调用前执行。关于SpringAOP的通知的详细讨论读者可以参考《Spring in Action (第二版)中文版》第四章4.2.1
为了使通知起作用,需要在spring配置文件加入如下内容:
ok,配置完成,在使用时只需要在方法上加入@UserOperateLog
例如:
日志输出结果如下:
2010-03-04 16:01:45 useroperatorlog:68 INFO - hanqunfeng - 1 - 注解日志
注解里使用了key,这样就会从指定的配置文件中查找,如果查找到就替换掉默认的value值。
详细的代码请参考附件。
原帖在:http://hanqunfeng.javaeye.com/blog/608001