AOP Demo
2021/8/21 23:08:12
本文主要是介绍AOP Demo,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.jinsh.aspect; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Aspect @Component public class ServiceLogAspect { public static final Logger logger = LoggerFactory.getLogger(ServiceLogAspect.class); /** * AOP通知: * 1、前置通知:方法调用之前通知 * 2、后置通知:方法正常调用之后通知 * 3、环绕通知:方法调用之前和之后,都分别可以执行的通知 * 4、异常通知:如果在方法调用过程中发生异常,则通知 * 5、最终通知:在方法调用之后通知 */ /** * 获取方法执行的时间,根据方法执行时间来打印不同级别日志 * * 切面表达式execution: * 第一处 * 代表方法的返回类,*代表所有类型 * 第二处 包名代表AOP监控的类所在的包 * 第三处 ..代表该包以及其子包下所有的类 * 第四处 * 代表类名 * 第五处 *(..) *代表类中的方法名,(..)表示方法中的任何参数 * * @param joinPoint * @return * @throws Throwable */ @Around("execution(* com.jinsh.service.impl..*.*(..))") public Object recordTimeLog(ProceedingJoinPoint joinPoint) throws Throwable { // 记录某一个service执行的某一个方法, // joinPoint.getTarget().getClass()获取类, // joinPoint.getSignature().getName()获取方法名 logger.info("===== 开始执行 {} -> {} =====", joinPoint.getTarget().getClass(), joinPoint.getSignature().getName()); long begin = System.currentTimeMillis(); // 开始时间 Object result = joinPoint.proceed(); // 执行方法 long end = System.currentTimeMillis(); // 结束时间 long takeTime = end - begin; if (takeTime > 3000) { logger.error("===== 执行结束,耗时:{} 毫秒 =====", takeTime); } else if (takeTime > 2000) { logger.warn("===== 执行结束,耗时:{} 毫秒 =====", takeTime); } else { logger.info("===== 执行结束,耗时:{} 毫秒 =====", takeTime); } return result; } }
这篇关于AOP Demo的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?