基于Spring Aop的日志实现
AOP的概念理解:面向切面编程,自定义一个类作为通知类,定义切入点标明那些类的那些方法需要处理,什么时机处理
五种通知类型 before after afterReturning afterThrowing round
aop的使用步骤xml+注解形式
1 定义类作为通知类 @component 作为切面 @Aspect
2 在xml中开启支持 aop:aspect-autoproxy @EnableAspectAutoProxy
3 切入点的配置 pointCut("* cn.hehe.*.*(..))")
4 @Before 等通知
需求:在请求方法时候记录 信息
1. 操作的用户名
User 是security权限框架的对象 通过
2. 请求的动作类名
jointPoint.getTarget.getSimpleName();
3. 请求的方法名
接入点jointPoint.getSingature.getName();
4. 请求的url路径
动作类上面配置的mapping加上方法上面的mapping
需要获取执行的类对象 和执行的方法对象
方法对象的获取分为无参数和有参数
5. 传递的参数
Arrays.toString(参数的数组);
6. 请求的ip地址
7. 访问的时间
新建时间保存
8. 执行花费的时间
当前时间 减去之前保存的对象中的访问时间
9. 执行结果的状态
根据执行后的通知类型 设置SUCCESS 或者EXCEPTION
10. 异常信息
e.getMsg(); 获取异常的信息
再写一个日志保存的service类在@[email protected]@AfterThrowing通知中保存到数据库即可