在项目开发中往往需要记录一些用户操作的系统日志到数据库,而不仅仅是记录在文件中或者log4j上。
     第一种是最简单最原始也是最繁琐最笨的办法:即每个需要记录的操作入口方法中去调用新增日志的接口。

第二种是采用spring的拦截器进行方法拦截:
     建立一个拦截器:
       <mvc:interceptor>
           <mvc:mapping path="/**"/>
           <bean class="com.dw..interceptor.LogInterceptor"></bean>
        </mvc:interceptor>
     新建一个拦截器的class继承spring web的HandlerInterceptorAdapter类,在spring4中该类有四个方法可以进行重写,如:
preHandle:它会在处理方法之前执行,可以用来做一些编码处理、安全限制之类的操作。
postHandle:它是在方法执行后开始返回前执行,可以进行日志记录、修改ModelView之类的操作。
afterCompletion:最后执行,无论出错与否都会执行这个方法,可以用来记录异常信息和一些必要的操作记录。
afterConcurrentHandlingStarted:controller方法异步开始执行时就开始执行这个方法,而postHandle需要等到controller异步执行完成后再执行。
 需要注意的是spring的拦截器无法获取处理函数的参数值。

第三种就是采用spring的AOP配置注解进行拦截:
     首先在springAOP中的三个概念:advice、pointcut、advisor。

新建一个类,无需任何继承和实现接口,只需要在类上加入注解@Aspect。创建一个切入点的方法,注解@Pointcut,然后在创建一个方法,配置需
要通知的类型,通过JoinPoint相关类来获取参数值和请求的内容。具体的切入点和通知类型的表达式需参考springAOP相关的表达式语法。然后
需要在配置文件配置<aop:aspectj-autoproxy>,即aspectj动态代理。

具体的日志记录实现、可以采用匹配请求地址的方法进行记录(因为查询操作可能不需要记录),哪些需要记录的请求可以通过配置文件来配置,也可以通过注解来实现。
    或者是通过自定义注解来实现日志拦截,通过Pointcut拦截具体的注解而达到按需记录日志的功能。

最新文章

  1. CentOS安装Maven
  2. 【5集iCore3_ADP演示视频】5-5 iCore3应用开发平台示波器和信号源校准
  3. ajax读取XML文本(如读取城市)
  4. (九)串行口方式0 拓展并行输出端口 02 74LS164芯片
  5. eclipse Project facet Java version 1.8 is not supported.
  6. Hadoop :map+shuffle+reduce和YARN笔记分享
  7. open/fopen read/fread write/fwrite区别
  8. (二)Angularjs - 入门(2)
  9. Altium Designer (protel) 各版本“故障”随谈
  10. jar打包命令
  11. linux历史发展
  12. ios7禁止默认划动返回
  13. html5 canvas画布尺寸与显示尺寸
  14. 根据高德API知道坐标获取详细地址信息
  15. Redis数据结构之skiplist
  16. python统计字词练习
  17. 关于Java项目打包成Runnable jar文件后运行时图片不显示的问题
  18. 洛谷 质因子分 p2043
  19. 【pyqtgraph绘图】案例-动态的正余弦波形图
  20. wxPython 入门开发示例

热门文章

  1. Javascript:scrollWidth,clientWidth,offsetWidth的区别(转)
  2. $.data()、$().data
  3. Industry Engineer
  4. rm: 无法删除 &quot;xxxxx.o&quot; : 输入/输出错误.
  5. HDU2066一个人的旅行/最短路问题
  6. 自动打开notepad 并写入数据
  7. Loadrunner之脚本的调试和保存(六)
  8. HDU 4828 Grids(卡特兰数+乘法逆元)
  9. java 内存分配全面解析
  10. Linux学习 -- 用户和用户组管理