快速业务通道

spring aop面向切面编程:如何来做一个强大的日志记录功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
           </entry>            </map>          </entry>          <entry key="com.hs.dolphin.domain.User">            <map>              <entry key="getId"><!-- 属性的get方法名字 -->                <value>id</value><!-- 属性名字 -->              </entry>              <entry key="getUserName"><!-- 属性的get方法名字 -->                <value>userName</value><!-- 属性名字 -->              </entry>            </map>          </entry>        </map>      </property>    </bean>

第三:>>在这个切点处理bean类里,在class定义的上一行加上切面定义标签,如下:

@Aspect // 切面定义标签 public class LogAspect {    private UserSession sessionValue; // 当前操作员基本信息    private String userIpAddress; // 当前操作员IP地址

第四:>>定义切点及处理方法

@Pointcut("execution(* *.*.*.service..*.insert*(..)) || execution(* *.*.*.service..*.update*(..)) "      + "|| execution(* *.*.*.service..*.remove*(..))"      + "|| execution(* *.*.*.service..*.delete*(..))")    public void insertPointcut() {    }

可以在@Pointcut定义下面的这个函数里写上要处理的代码,也可以进行更多更多大的扩展,我的项目里就是做了扩展处理,在上面这个函数里没添加任何方法处理,而是在后面扩展,也就是所谓的Advice吧,请看下一步

第五:>>Advice扩展处理

@AfterReturning("insertPointcut()")    public void insertLogInfo(JoinPoint joinPoint)      throws Exception{       /*处理代码,略*/     }

=====================================

好了,完成了,是不是很容易.在第五步的这个方法里有一个参数,这个参数也许就是切面自己传进来的,所以你就这样写吧,JoinPoint 对象里可以获取切面切点的相关信息,如方法名,参数,类路径,类名等等,这样我们就可以来记录操作者进行的操作的详细信息,比如执行的方法名,其所在的对象类名,操作方法里带的所有参数信息,等,再加上自己另外获取一些信息,比如,当前操作时间,操作用户,还可以根据以上信息来定义操作类别等等

本文里源码下载,只是关键的一个spring配置文件和那个bean,其它的文件没上传上来.转载者请将附件上传到你的服务器

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号