1.SpringBoot AOP的Maven依赖:
1 <!--引入AOP依赖 --> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-aop</artifactId> 5 </dependency>
2.Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler
接口和Proxy
类。CGLIB通过继承被代理的类来实现动态代理。所以JDK代理是基于接口,CGLIB代理是基于类。
3.SpringBoot 2.x默认使用的代理是CGLIB代理,application里的spring.aop.proxy-target-class默认值是true,也就是说spring.aop.proxy-target-class=false时,使用的是JDK代理。
4.被代理的类的方法若有返回值,记得执行pjp.proceed()后,返回这个对象,否则原业务代码的中调用该方法的地方会出现NullPointerException。