zoukankan      html  css  js  c++  java
  • springboot中springAOP的使用

      <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
    package cn.fff.test.aop;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TrackTime {
        String param() default "";
    }
    package cn.fff.test.aop;
    
    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.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    @Aspect
    @Component
    public class TrackTimeAspect {
    
        @Pointcut("execution(* cn.fff.test.GirlService.aopDemo(..))")
        public void aopDemo() {}
    
        @Before("TrackTimeAspect.aopDemo()")
        public void before(JoinPoint joinPoint) {
            System.out.println(" -------------> Before Aspect ");
            System.out.println(" -------------> before execution of " + joinPoint);
        }
    
        /*@Around("@annotation(trackTime)")
        public Object around(ProceedingJoinPoint joinPoint, TrackTime trackTime) throws Throwable {
            Object result = null;
            long startTime = System.currentTimeMillis();
            result = joinPoint.proceed();
            long timeTaken = System.currentTimeMillis() - startTime;
            System.out.println(" -------------> Time Taken by " + joinPoint + " with param[" + trackTime.param() + "] is " + timeTaken);
            return result;
        }*/
    
        @Around("@annotation(trackTime)")
        public void around(ProceedingJoinPoint joinPoint, TrackTime trackTime) throws Throwable {
            System.out.println("玩地地道道的");
            joinPoint.proceed();
    
            System.out.println(" -------------> Time Taken by " + joinPoint + " with param[" + trackTime.param() + "] is ");
    
        }
    }
    package cn.fff.test;
    
    import cn.fff.test.aop.TrackTime;
    import org.springframework.stereotype.Service;
    
    @Service
    public class GirlService {
    
    
        @TrackTime(param = "myService")
        public void getAge(Integer id){
    
            Integer age =id;
            System.out.println("环绕通知");
            if (age <= 10) {
                throw new GirlException(ResultEnum.PRIMARY_SCHOOL);
            }
    
            if (age < 16) {
                throw new GirlException(ResultEnum.MIDDLE_SCHOLL);
            }
        }
    
        public void aopDemo() {
            System.out.println("defdfdfdfddfdf");
        }
    
    
    
    }
  • 相关阅读:
    刷新dbgrid 而不失去当前行位置
    Delphi Code Editor 之 快捷菜单
    Delphi Code Editor 之 几个特性(转)
    Delphi DBGrid双击事件、单元格操作
    在DBGrid中可选中行而又可进入编辑状态
    如何在DBGrid中能支持多项记录的选择
    在Delphi中如何获得SQL中存储过程的返回值?
    Delphi:ADOConnection连接SQLServer自动断网问题解决
    ADO.NET基础必备之SqlCommand.Execute三方法
    Delphi中exit、break、continue等跳出操作的区别
  • 原文地址:https://www.cnblogs.com/leeego-123/p/10510418.html
Copyright © 2011-2022 走看看