spring AOP

jason_nj 发布于 2017/11/23 16:48
阅读 107
收藏 0

我在项目中使用aop来记录方法执行日志,数据库操作使用的是mybatis,只有接口,没有实现类,所以aop没办法记录到mybatis的执行信息。想请教怎么可以记录到mybatis的调用运行。

加载中
1
CodeZero
CodeZero

3种方法,1.自定义一个注解,给MyBatis的接口都注解上,AOP拦截这个注解就行了,2.扫描特定的包execution()方法可以实现,3.MyBatis通过接口直接映射SQL的原理是使用java的动态代理,你只要找到MyBatis的动态代理类( Proxy.newProxyInstance()),MyBatis实现了InvocationHandler接口,然后帮每个接口定义了Proxy代理,你只要拦截InvocationHandler接口的invoke方法就行了

jason_nj
jason_nj
虽然还没有测试,但从理论上将,1和3是可以行得通
1
技术家

使用切入点指向mapper的包就可以进行操作了。例如我们mybatis的接口存

放在 com.test.admin.mapper.login下。"execution(* com.test.admin.mapper.login.*.*(..))"

 

返回顶部
顶部