• Spring切面编程Aspect之@Before和@Around用法


    查看dao层使用的sql

    import java.util.Arrays;
    import org.apache.commons.lang.ArrayUtils;
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.springframework.stereotype.Component;
    
    @Aspect
    @Component
    public class SqlAspect{
        
        /**
         * 查看执行的service层
         * @param pjp
         */
        @Before("execution(* com.gmtx.*.services.*.*(..))")
        public void beforeService(JoinPoint pjp){
            System.out.println("---Service层业务---"+CommonTool.getNowDateStr());
            System.err.println("  getTarget: " + pjp.getTarget().getClass());
            System.err.println("  toShortString: " + pjp.toShortString());
            System.err.println("  Args: " + Arrays.toString(pjp.getArgs()).toString());
        }
        
        /**
         * 查看执行的sql
         */
        @Before("execution(* com.gmtx.system.dao.CommonDao..*(..))")
        public void before(JoinPoint pjp){
            //打印参数
            System.out.println("-------------参数--------------"+CommonTool.getNowDateStr());
            Object[] argsObjects = pjp.getArgs();
            for (Object obj:argsObjects) {
                if(obj!=null&&obj.getClass().isArray()){  //如果是数组
                    System.out.println(ArrayUtils.toString(obj));
                }else {
                    System.out.println(obj);   //不是数组
                }
            }
        }
        
        /**
         * 查看sql执行时间
         */
        @Around("execution(* com.gmtx.system.dao.CommonDao..*(..))")   /*切点 - 有Tag标记的Method*/
        public Object around(ProceedingJoinPoint pjp) throws Throwable {    /*增强*/
            long s = System.currentTimeMillis();
            Object result = pjp.proceed();
            long e = System.currentTimeMillis();
            System.out.println("-------------时长--------------"+(e-s));
            return result;
        }
        
    }

    引用的jar包为aspectjrt.jar

  • 相关阅读:
    菜根谭#317
    菜根谭#316
    菜根谭#315
    菜根谭#314
    菜根谭#313
    菜根谭#312
    菜根谭#311
    菜根谭#310
    菜根谭#309
    Matlab xpC启动盘
  • 原文地址:https://www.cnblogs.com/aeolian/p/9222544.html
Copyright © 2020-2023  润新知