Spring AOP中代理对象是怎么存储的,具体源码分析
时间: 2023-11-12 09:48:36 浏览: 106
死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf
在Spring AOP中,代理对象是通过代理工厂来创建和存储的。具体的源码分析如下:
1. 代理对象创建过程:
- Spring AOP使用ProxyFactory类来创建代理对象。
- 在ProxyFactory中,通过调用createAopProxy()方法来创建AopProxy对象。
- AopProxy是一个接口,具体的实现类有JdkDynamicAopProxy和CglibAopProxy。
- createAopProxy()方法会根据目标对象是否实现接口,选择使用JDK动态代理还是CGLIB动态代理来创建代理对象。
2. 代理对象的存储:
- 代理对象的存储是通过AopProxyFactory类来实现的。
- AopProxyFactory是一个接口,具体的实现类有DefaultAopProxyFactory和ConfigurableListableBeanFactory。
- DefaultAopProxyFactory是默认的AOP代理工厂,它会在createAopProxy()方法中创建相应的AopProxy实例。
- ConfigurableListableBeanFactory是Spring框架中的Bean工厂接口,它可以管理和存储Bean定义和实例。
- 在ConfigurableListableBeanFactory中,通过BeanDefinition对象来存储代理对象的相关信息,包括目标对象、增强器、代理接口等。
具体的源码实现涉及到多个类和接口,这里只提供了大致的分析。如果你对具体的源码实现感兴趣,可以查阅Spring AOP相关的源码,如ProxyFactory、AopProxy、AopProxyFactory等类的实现。
阅读全文