Press "Enter" to skip to content

审计日志实现思路

背景

项目是基于Spring MVC + Mybatis,需要记录管理员用户名和SQL。

要求:最好不要对现有代码进行更改,会造成代码耦合度高不好维护,且容易出问题。

思路

拦截器实现

Request拦截器:记录用户名获取session ID

Mybatis拦截器:记录sql

问题

Mybatis 在底层,不参与request请求流程,所以request如何能和执行sql绑定在一起?

流程

一种思路,使用线程ID贯彻流程,如图:

这里假设没有异步调用Mybatis,整个过程都在一个线程内完成。

先在Request拦截器中将Thread ID 和 Session ID绑定,Mybatis拦截器根据Thread ID获取Session ID,最终获取我们想要的数据。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注