关于@Around ,@After,@Before的详细解释

1. @Around的代码及图片详细解释代码含义

1.1@Around的代码,和参考输出顺序结果

package com.wqy.sport.friends.config;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;

/**
 @program: SportTime
 @project-name: SportTime
 @author: 王乾榆
 @description:
 @create: 2020-03-18 15:09:09 */
@Aspect  //@Aspect注解就是告诉spring 这是一个aop类,AOP切面
@Configuration //@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,
// 这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,
// 并用于构建bean定义,初始化Spring容器。
public class HandlerInterceptorEG {
    public static Integer i = 0;
    // 用@Pointcut来注解一个切入方法
    //@Pointcut注解 声明这是一个需要拦截的切面,也就是说,当调用任何一个controller方法的时候,都会激活这个aop
//    @Pointcut("execution(* com.wqy.sport.friends.controller.FriendsControllerEG.friendsAllMet(..))")
//    public void excudeService() {    。。。。。    }
    //@Around注解 环绕执行,就是在调用之前和调用之后,都会执行一定的逻辑
    @Around("execution(* com.wqy.sport.friends.controller.FriendsControllerEG.friendsAllMet(..))")
    public Object aroundMethod(ProceedingJoinPoint jointPoint) throws Throwable {
        long startTime = System.currentTimeMillis();
        System.err.println("startTime = " + startTime);
        Thread.sleep(1000);//让主线程睡眠1秒,用于区分执行顺序,如果不睡眠则执行的时间相差太少,且打印顺序不是固定的,有一定的随机打印可能
       Object result = jointPoint.proceed();  //调用执行目标方法(result为目标方法执行结果),必须有此行代码才会执行目标调用的方法(等价于@befor+@after),否则只会执行一次之前的(等价于@before)
        Thread.sleep(1000);//让主线程睡眠1秒,用于区分执行顺序,如果不睡眠则执行的时间相差太少,且打印顺序不是固定的,有一定的随机打印可能
        long endTime = System.currentTimeMillis();
        System.err.println("endTime = " + endTime);
        return result;
    }
}

执行的结果

startTime = 1584520898864
2020-03-18 16:41:39.864  INFO 16440 --- [io-10002-exec-3] c.w.s.f.c.FriendsControllerEG            : 进入了1584520899864
2020-03-18 16:41:39.877  INFO 16440 --- [io-10002-exec-3] c.w.s.f.c.FriendsControllerEG            : 离开了1584520899877
endTime = 1584520900877

1.2@Around的图片详细解释代码含义

这是一个对代码进行了详细解释的图片,代码已经在上边附上
运行结果描述

@After和@Before的解释可以看图片中,用法跟@Around一样

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值