SpringAop中JoinPoint对象使用时出现的问题

介绍不写了,API也不写了,记录问题解决。

切面类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package xyz.yuzh.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
* 日志切面
*
* @Author: z.yu
* @Date: 2018/06/19 20:35
*/
@Aspect
@Component
public class LogAspect {

/**
* 如果代理Handler,该Handler不能继承类。
*/
@AfterReturning(pointcut = "execution(* xyz.yuzh.service.*.*(..))")
public void log(JoinPoint point) {
Object[] args = point.getArgs();
for (Object a : args) {
System.out.println("入参数 -> " + a + ",");
}
System.out.println("方法签名:" + point.getSignature());
System.out.println("目标对象:" + point.getTarget());
System.out.println("代理对象:" + point.getThis());
System.out.println("-----------------------");
}

}

spring与aspectJ版本冲突问题

版本冲突真是让人脑阔疼。
用这个

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.2.7</version>
</dependency>

代替这个

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>

maven会自动处理spring与aspect的依赖关系。依赖了 aspectwearer.jar,没有引用 aspectjrt.jar 但是也可以用,主要是可以看到aspect的版本号,以便于手动加入想要的aspect包。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×