SpringBoot AOP 总结

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。

猜你喜欢

转载自www.cnblogs.com/lroy/p/12218117.html