关于@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的图片详细解释代码含义
yimiygk: plsql和sqldeveloper推荐用哪个呢
java码农007: 授予高级数据库权限,保证一定能够操作
weixin_37887179: mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; mysql> grant all on . to ‘slave’@’%’ ; 第二句是什么意思?
泰山AI: 谢谢分享,大佬的文章让我受益颇多!
java码农007: 加油,努力变成正经的不正经人!