spring aop的底层原理
时间: 2023-08-18 07:06:04 浏览: 136
spring-aop底层1
Spring AOP的底层原理是基于动态代理技术实现的。在Spring中,有两种常见的动态代理方式:JDK动态代理和CGLIB动态代理。
1. JDK动态代理:
JDK动态代理是基于Java的反射机制实现的,它要求目标对象必须实现至少一个接口。当目标对象被代理时,Spring通过生成一个实现了目标对象所有接口的代理类,并且在代理类中增加了切面逻辑。当调用代理类的方法时,实际上是调用了InvocationHandler中的invoke方法,在该方法中可以执行切面逻辑,并最终调用目标对象的方法。
2. CGLIB动态代理:
CGLIB动态代理是基于字节码生成库CGLIB实现的,它可以代理没有实现接口的类。当目标对象被代理时,Spring通过生成一个目标对象的子类,并且在子类中增加了切面逻辑。在子类中,切面逻辑会在目标方法执行前后进行调用。当调用子类的方法时,实际上是调用了MethodInterceptor中的intercept方法,在该方法中可以执行切面逻辑,并最终调用目标对象的方法。
无论是使用JDK动态代理还是使用CGLIB动态代理,Spring AOP都会根据配置信息决定使用哪种方式进行代理。通过动态代理的方式,Spring AOP可以在运行时动态地将切面逻辑织入到目标对象的方法中,实现了对业务逻辑的解耦和横向切割。
阅读全文