【Aop 打印不出 方法的执行时间 _aop 】 | IT修真院·坑乎
问题已收录 Aop 打印不出 方法的执行时间
我也踩过这个坑( 1 )
已统计您的踩坑,无需重复点击
回答(1)
aop
详细描述
错误截图
编辑于2024-05-09
  • [深圳|结业弟子]JAVA-杨萧
    0

    看了一下你的配置,感觉是aop都没有切进去,我把我的配置给你贴一下,你可以对比一下,看一下是哪里少了。


    这个是控制类:

    @Aspect

    @Component

    public class AopController {

        private static Log logger = LogFactory.getLog(AopController.class);


        private static final long ONE_MINUTE = 0;



        /**

         * 统计方法执行耗时Around环绕通知

         *

         * @param joinPoint

         * @return

         */

        //类型:public

        @Around("execution (* com.controller.PaperController.*(..))")

        public Object timeAround(ProceedingJoinPoint joinPoint) {

            //logger.info("进入控制类切面中。。。\n\n");

            // 定义返回对象、得到方法需要的参数

            Object obj = null;

            Object[] args = joinPoint.getArgs();

            long startTime = System.currentTimeMillis();


            try {

                obj = joinPoint.proceed(args);

            } catch (Throwable e) {

                logger.error("统计某方法执行耗时环绕通知出错", e);

            }


            // 获取执行的方法名

            long endTime = System.currentTimeMillis();

            MethodSignature signature = (MethodSignature) joinPoint.getSignature();

            String methodName = signature.getDeclaringTypeName() + "." + signature.getName();


            // 打印耗时的信息

            this.printExecTime(methodName, startTime, endTime);

            //logger.info(".....................................................");

            return obj;

        }


        /**

         * 打印方法执行耗时的信息,如果超过了一定的时间,才打印

         *

         * @param methodName

         * @param startTime

         * @param endTime

         */

        private void printExecTime(String methodName, long startTime, long endTime) {

            long diffTime = endTime - startTime;

            if (diffTime > ONE_MINUTE) {

                logger.info( methodName + " Controller 类方法执行耗时: " + diffTime );

            }

        }



    还有需要注意的是,需要将aop包扫描

        <!-- 4.扫描web相关的bean -->

        <context:component-scan base-package="com.aop"/>


    编辑于2018-10-05