Spring2.5那些事之基于AOP的方法级注解式日志配置
在日常开发中经常需要在代码中加入一些记录用户操作日志的log语句,比如谁在什么时间做了什么操作,等等。
把这些对于开发人员开说无关痛痒的代码写死在业务方法中实在不是一件很舒服的事情,于是AOP应运而生。
?
Spring对AOP的支持有以下4种情况:
1.基于代理的AOP
2.@Aspectj
3.纯POJO
4.注入式Aspectj切面
?
前三种都是基于方法级的,最后一个可以精确到属性及构造器。
?
关于Spring对AOP的支持的详细内容,读者可以参考《Spring in Action (第二版)中文版》第四章。
?
我这里使用的是第三种,纯POJO的方式,这种方式仅能在spring2.0及以后的版本中使用。
?
ok,言归正传,还是来说一说方法级注解的日志配置方式吧,顾名思义,就是只需要在方法上增加一个注释就可以自动打印日志,所以首先需要创建一个注解,如下:
?
为了使通知起作用,需要在spring配置文件加入如下内容:
?
ok,配置完成,在使用时只需要在方法上加入@UserOperateLog
例如:
@RequestMapping(value = "/demo/index2.do")@UserOperateLog(value="注解日志",type=1,key="annotation.log")public String handleIndex2(Model model,HttpSession session){return "demo/list";}?
日志输出结果如下:
2010-03-04 16:01:45 useroperatorlog:68? INFO - hanqunfeng - 1 - 注解日志
?
注解里使用了key,这样就会从指定的配置文件中查找,如果查找到就替换掉默认的value值。
?
详细的代码请参考附件。
1 楼 dengquanhao 2011-01-24 引用@RequestMapping(value = "/demo/index2.do")
@UserOperateLog(value="注解日志",type=1,key="annotation.log")
public String handleIndex2(Model model,HttpSession session){
return "demo/list";
}
请问如上的@UserOperateLog(value="注解日志",type=1,key="annotation.log")中的value或则key,type等
,我可否传入一个动态值呢? 2 楼 hanqunfeng 2011-01-25 dengquanhao 写道引用@RequestMapping(value = "/demo/index2.do")
@UserOperateLog(value="注解日志",type=1,key="annotation.log")
public String handleIndex2(Model model,HttpSession session){
return "demo/list";
}
请问如上的@UserOperateLog(value="注解日志",type=1,key="annotation.log")中的value或则key,type等
,我可否传入一个动态值呢?
貌似不可以。