springMVC记录系统⽇志的⼏种⽅式
springmvc的注解有哪些在项⽬开发中往往需要记录⼀些⽤户操作的系统⽇志到数据库,⽽不仅仅是记录在⽂件中或者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拦截具体的注解⽽达到按需记录⽇志的功能。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。