动态代理主要的相关类
类 主要作用
AdvisedSupport 注册被代理目标对象、通知,和需要代理的接口
ProxyCreatorSupport 注册和触发监听器,借助DefaultAopProxyFactory获取代理
DefaultAdvisorAdapterRegistry 将Advice包装成Advisor(DefaultPointcutAdvisor); 借助AdvisorAdapter,将Advisor包装成MethodInterceptor
DefaultAdvisorChainFactory 借助DefaultAdvisorAdapterRegistry将Advisor集合转换成MethodInterceptor集合
JdkDynamicAopProxy 生成jdk动态代理
CglibAopProxy 生成Cglib动态代理
ProxyCreatorSupport
ProxyCreatorSupport是spring动态代理比较重要的类,该类的继承层次如下:
动态代理核心步骤
1. ProxyCreatorSupport
无论使用什么动态代理主要都是设置如下三种信息,而spring的类ProxyCreatorSupport(父类:AdvicedSupport)就是用于设置并保存这些信息的。
设置被代理对象target
设置代理接口
设置通知advice
2. Advice
通知也是一种bean,要代理其他对象,首先要获取通知(Advice)bean,然后将Advice 包装成Advisor(DefaultPointcutAdvisor)。这个步骤主要是由DefaultAdvisorAdapterRegistry来做,DefaultAdvisor