AnnotationScopeMetadataResolver 解析作用域元数据
AnnotationScopeMetadataResolver 通过resolveScopeMetadata()方法解析注解Bean 定义类的作用域元信息,即判断注册的Bean 是原生类型(prototype)还是单态(singleton)类型,其源码如下:
//解析注解Bean定义类中的作用域元信息
@Override
public ScopeMetadata resolveScopeMetadata(BeanDefinition definition) {ScopeMetadata metadata = new ScopeMetadata();if (definition instanceof AnnotatedBeanDefinition) {AnnotatedBeanDefinition annDef = (AnnotatedBeanDefinition) definition;//从注解Bean定义类的属性中查找属性为”Scope”的值,即@Scope注解的值//annDef.getMetadata().getAnnotationAttributes()方法将Bean//中所有的注解和注解的值存放在一个map集合中AnnotationAttributes attributes = AnnotationConfigUtils.attributesFor(annDef.getMetadata(), this.scopeAnnotationType);//将获取到的@Scope注解的值设置到要返回的对象中if (attributes != null) {metadata.setScopeName(attributes.getString("value"));//获取@Scope注解中的proxyMode属性值,在创建代理对象时会用到ScopedProxyMode proxyMode = attributes.getEnum("proxyMode");//如果@Scope的proxyMode属性为DEFAULT或者NOif (proxyMode == ScopedProxyMode.DEFAULT) {//设置proxyMode为NOproxyMode = this.defaultProxyMode;}//为返回的元数据设置proxyModemetadata.setScopedProxyMode(proxyMode);}}//返回解析的作用域元信息对象return metadata;
}
上述代码中的annDef.getMetadata().getAnnotationAttributes()方法就是获取对象中指定类型的注解的值。
AnnotationScopeMetadataResolver 解析作用域元数据相关推荐
- Spring IOC流程源码分析
一.Spring 核心容器 IOC初始化过程 Spring 核心之 IOC 容器初体验 IOC 与 DI IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里 ...
- 从源码深处体验Spring核心技术--基于注解的IOC初始化
Annotation 的前世今生 从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特 ...
- 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以 ...
- 从Spring源码探究IOC初始化流程
随着不断地使用Spring,以及后续的Boot.cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考. 通过自学 ...
- 【Spring】IOC:基于注解的IOC容器初始化源码分析
从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特性,用于简化 Bean 的配置,可 ...
- 21.手绘Spring IOC运行时序图
1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建.依赖的代码,反转给容器来帮忙实现.那么必然的我们需要创建一 ...
- SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)
目录导航 前言 注解的引入 AnnotationConfigApplicationContext 对注解Bean初始化 AnnotationConfigApplicationContext注册注解Be ...
- Spring IOC 原理
Spring IOC原理 IOC理解 自己写的简单的IOC容器 IOC的原理 定位.加载.注册 基于XML配置的IOC容器初始化 1.寻找入口 2.获取配置路径 3.开始启动 4.创建容器 5.载入配 ...
最新文章
- 收入最高的 24 个开发人员职位
- poj 1087 A Plug for UNIX 【最大流】
- OpenCV基本mat重建的实例(附完整代码)
- Win10环境下,word2016嵌入mathtype出现灰色的解决办法
- java集合概念_JAVA集合概念
- [转载] 将一个整数型字符串转换为一个整数
- 拼多多市值超1600亿美元 成中国第四大互联网公司
- 除权除息对散户是利好还是不利好?
- Linux一些基本概念
- 如何在Windows平台上基于github搭建个人博客平台
- 跳转gridview
- 1076 Wifi密码
- Pytorch学习笔记7——自定义数据集
- Redmi MAX 90 评测 Redmi MAX 90参数
- linux 没有可用的缓冲区空间不足,由于系统缓冲区空间不足或队列已满,不能执...
- Jquery 中 ajaxSubmit使用讲解
- 微信服务号与订阅号的主要区别是什么?
- 财路网每日原创推送:区块链+教育,是改革的良性循环?
- enq: TX - allocate ITL entry
- Qtum量子链应邀出席第24届全美华人金融协会年会
热门文章
- iOS原生WebView中JavaScript和OC交互
- Linux下C语言的文件操作
- deferred对象和promise对象(二)---deferred对象
- JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组
- 修改shell提示符的显示格式
- HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何
- 居中弹出一个层,打开一个文件。
- COM+在win2003+IIS+MSSQL环境下的部署步骤
- Python模块包中__init__.py文件的作用(转载)
- JBoss 系列十七:使用JGroups构建块MessageDispatcher 构建群组通信应用