在springboot中怎么使用AOP进行全局日志记录
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下在springboot中怎么使用AOP进行全局日志记录,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、 spring AOP 是什么?spring 的两大核心就是
千家信息网最后更新 2026年11月02日在springboot中怎么使用AOP进行全局日志记录
小编给大家分享一下在springboot中怎么使用AOP进行全局日志记录,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
1、 spring AOP 是什么?
spring 的两大核心就是 IOC 和 AOP,AOP 是 spring 框架面向切面的编程思想,AOP是横切性的技术,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,再将这些切面横向切入到业务流程指定的位置中。
2、spring AOP 能做什么?
AOP 主要是从切面入手,将日志记录、安全控制、事务处理、全局异常处理等全局功能从我们的业务逻辑代码中划分出来。
3、spring AOP 我能用 AOP 解决什么问题?
正好我这边需要做一个全局的日志,如果每个方法都去写日志记录,这样代码量非常大,而且代码繁琐冗余,全局记录的话,只需要在方法上增加一个注解就可以实现日志记录。
好了,不多bb,直接上代码实现
一、引入依赖,增加自定义注解
1、引入 maven 依赖
org.springframework.boot spring-boot-starter-aop
2、增加自定义注解 OperationLog
@Target(ElementType.METHOD) //注解放置的目标位置,METHOD是可注解在方法级别上@Retention(RetentionPolicy.RUNTIME) //注解执行阶段@Documentedpublic @interface OperationLog { String operDesc() default ""; // 操作说明}二、为自定义注解编写切面实现
@Aspect //标识一个切面类@Componentpublic class OperationLogAspect { private static final Logger logger = LoggerFactory.getLogger(OperationLogAspect.class); @Autowired private OperatelogsService OperatelogsService; @Autowired private SysUserService userService; /** * 设置操作日志切入点 记录操作日志 在注解的位置切入代码 */ @Pointcut("@annotation(com.wxw.annotation.OperationLog)") public void operLogPoinCut() { } /** * 正常返回通知,拦截用户操作日志,连接点正常执行完成后执行, 如果连接点抛出异常,则不会执行 * * @param joinPoint 切入点 * @param keys 返回结果 */ @AfterReturning(value = "operLogPoinCut()", returning = "keys") public void saveOperLog(JoinPoint joinPoint, Object keys) { // 获取RequestAttributes RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); // 从获取RequestAttributes中获取HttpServletRequest的信息 HttpServletRequest request = (HttpServletRequest) requestAttributes .resolveReference(RequestAttributes.REFERENCE_REQUEST); Operatelogs operlog = new Operatelogs(); try { // 从切面织入点处通过反射机制获取织入点处的方法 MethodSignature signature = (MethodSignature) joinPoint.getSignature(); // 获取切入点所在的方法 Method method = signature.getMethod(); // 获取操作 OperationLog opLog = method.getAnnotation(OperationLog.class); if (opLog != null) { String operDesc = opLog.operDesc(); operlog.setfDescript(operDesc); // 操作描述 } // 获取请求的类名 String className = joinPoint.getTarget().getClass().getName(); // 获取请求的方法名 String methodName = method.getName(); methodName = className + "." + methodName; operlog.setfRequestMethod(methodName); // 请求方法 // 请求的参数 Object[] arguments = joinPoint.getArgs(); //判断参数数组是否为空 Stream> stream = ArrayUtils.isEmpty(arguments) ? Stream.empty() : Arrays.asList(arguments).stream(); //过滤 joinPoint.getArgs()返回的数组中携带有Request或者Response对象 List三、使用自定义日志注解
将自定义注解加在方法上,请求方法之后,就可以将方法的日志记录到自己的数据库里面了。
看完了这篇文章,相信你对"在springboot中怎么使用AOP进行全局日志记录"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
方法
日志
注解
信息
参数
用户
切面
全局
数组
代码
切入点
名称
所在
业务
位置
字符
字符串
连接点
业务流程
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网新科技
华服互联网科技靠谱吗
重庆互联网络科技
金融科技创新监管互联网金融
万易互联网科技
贷财互联网科技
小马过河互联网科技
科技互联网公司logo
猫创互联网科技
互联网科技的未来发展
科技大学互联网专业好不好
北京三清互联网科技
顶级互联网科技成果有哪些
荆州市昕露互联网络科技有限公司
爱医互联网络科技
富国互联网金融科技混合基金
工业互联网科技成果转化
陕西九四连强互联网科技有限公司
唐山双旺合互联网科技产业园
互联网科技企业文化
华服互联网科技靠谱吗
互联网科技产业
互联网巨头科技公司
网络科技有限互联网
善班互联网科技
人人互联网科技是培训
阿里互联网科技公司
千方科技属于互联网企业吗
保山浩联互联网科技有限公司
互联网领先科技成果宣传视频