没有合适的资源?快使用搜索试试~ 我知道了~
Spring底层学习:【AOP源码的探究】
0 下载量 169 浏览量
2020-12-21
08:26:41
上传
评论
收藏 270KB PDF 举报
温馨提示
试读
9页
AOP源码探究AOP源码探究:一、@EnableAspectJAutoProxy是什么?二、AnnotationAwareAspectJAutoProxyCreator组件的结构:三、流程: 定义–》注册–》创建–》赋值、初始化–》返回四、目标方法的执行:五、总结: AOP源码探究: 一、@EnableAspectJAutoProxy是什么? @Import(AspectJAutoProxyRegistrar.class):给容器中导入AspectJAutoProxyRegistrar,利用AspectJAutoProxyRegistrar自定义给容器中注册bean组件: internalAu
资源推荐
资源详情
资源评论
Spring底层学习:【底层学习:【AOP源码的探究】源码的探究】
AOP源码探究源码探究AOP源码探究:一、@EnableAspectJAutoProxy是什么?二、AnnotationAwareAspectJAutoProxyCreator组件
的结构:三、流程: 定义–》注册–》创建–》赋值、初始化–》返回四、目标方法的执行:五、总结:
AOP源码探究:源码探究:
一、一、@EnableAspectJAutoProxy是什么?是什么?
@Import(AspectJAutoProxyRegistrar.class):给容器中导入AspectJAutoProxyRegistrar,利用
AspectJAutoProxyRegistrar自定义给容器中注册bean组件:
internalAutoProxyCreator = AnnotationAwareAspectJAutoProxyCreator
public void registerBeanDefinitions(
AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(registry);
AnnotationAttributes enableAspectJAutoProxy =
AnnotationConfigUtils.attributesFor(importingClassMetadata, EnableAspectJAutoProxy.class);
if (enableAspectJAutoProxy != null) {
if (enableAspectJAutoProxy.getBoolean("proxyTargetClass")) {
AopConfigUtils.forceAutoProxyCreatorToUseClassProxying(registry);
}
if (enableAspectJAutoProxy.getBoolean("exposeProxy")) {
AopConfigUtils.forceAutoProxyCreatorToExposeProxy(registry);
}
}
}
AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(registry);对所必须对所必须
的的AspectJAnnotationAutoProxyCreator组件进行注册:
我们在源码中可以看见,这里注册的class为:AnnotationAwareAspectJAutoProxyCreator
return registerOrEscalateApcAsRequired(AnnotationAwareAspectJAutoProxyCreator.class, registry, source);
所以我们可以得到这个注解的作用是:给容器中注册一个AnnotationAwareAspectJAutoProxyCreator:自动代理创建器组
件;
二、二、AnnotationAwareAspectJAutoProxyCreator组件的结构:组件的结构:
AnnotationAwareAspectJAutoProxyCreator
父类:AspectJAwareAdvisorAutoProxyCreator
父类:AbstractAdvisorAutoProxyCreator
父类:AbstractAutoProxyCreator
父类:ProxyProcessorSupport
接口:SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware
我们关注的是:
1、后置处理器的工作 BeanPostProcessor:在bean初始化前后做的事情;
2、自动装配BeanFactory;
我们来找一下在这些子类子类和父类父类中有哪些与后置处理器和自动装配的方法:
1、AnnotationAwareAspectJAutoProxyCreator.initBeanFactory()
2、AspectJAwareAdvisorAutoProxyCreator没有
3、AbstractAdvisorAutoProxyCreator.setBeanFactory(),该函数还调用了:initBeanFactory
4、AbstractAutoProxyCreator.setBeanFactory()
5、AbstractAutoProxyCreator.postProcessBeforeInstantiation()
6、AbstractAutoProxyCreator.postProcessAfterInitialization()
资源评论
weixin_38732744
- 粉丝: 4
- 资源: 857
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功