NutzCN Logo
问答 nutz有没有对方法的监听器啊?
发布于 2867天前 作者 老司机 1901 次浏览 复制 上一个帖子 下一个帖子
标签:

RT,有个后台项目,想让管理员看到系统日志,谁什么时间对数据库做了什么?

想监听dao层的增删改查,想druid那样,怎么办?

5 回复

@wendal 那我拦击了,形成日志再往数据库里存,岂不是又被拦击,形成死循环?

@qq_c1bab051 用ThreadLocal哦, 确保拦截器内的插入操作,再进入拦截器的时候,跳过之

@wendal 怎么写,小白,对线程不熟

public class MyDaoLogInterceptor implements MethodInterceptor {

	protected static ThreadLocal<Object> TL = new ThreadLocal<Object>();
	
	public void filter(InterceptorChain chain) throws Throwable {
		if (TL.get() != null) { // 看来是前一个拦截器内调用, 那就不要再执行了
			chain.doChain();
			return;
		}
		try {
			TL.set(this);
                        // 记录日志.xxxxx
                         xxx,xx,x,xx
                        // 继续下一个拦截器
			chain.doChain();
		} finally{
			TL.remove();
		}
	}

添加回复
请先登陆
回到顶部