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 解析作用域元数据相关推荐

  1. Spring IOC流程源码分析

    一.Spring 核心容器 IOC初始化过程 Spring 核心之 IOC 容器初体验 IOC 与 DI IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里 ...

  2. 从源码深处体验Spring核心技术--基于注解的IOC初始化

    Annotation 的前世今生 从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特 ...

  3. 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  4. (转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

    1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以 ...

  5. 从Spring源码探究IOC初始化流程

    随着不断地使用Spring,以及后续的Boot.cloud,不断的体会到这个拯救Java的生态体系的强大,也使我对于这个框架有了极大的好奇心,以至于产生了我为什么不能写一个这样的框架的思考. 通过自学 ...

  6. 【Spring】IOC:基于注解的IOC容器初始化源码分析

    从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特性,用于简化 Bean 的配置,可 ...

  7. 21.手绘Spring IOC运行时序图

    1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建.依赖的代码,反转给容器来帮忙实现.那么必然的我们需要创建一 ...

  8. SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)

    目录导航 前言 注解的引入 AnnotationConfigApplicationContext 对注解Bean初始化 AnnotationConfigApplicationContext注册注解Be ...

  9. Spring IOC 原理

    Spring IOC原理 IOC理解 自己写的简单的IOC容器 IOC的原理 定位.加载.注册 基于XML配置的IOC容器初始化 1.寻找入口 2.获取配置路径 3.开始启动 4.创建容器 5.载入配 ...

最新文章

  1. 收入最高的 24 个开发人员职位
  2. poj 1087 A Plug for UNIX 【最大流】
  3. OpenCV基本mat重建的实例(附完整代码)
  4. Win10环境下,word2016嵌入mathtype出现灰色的解决办法
  5. java集合概念_JAVA集合概念
  6. [转载] 将一个整数型字符串转换为一个整数
  7. 拼多多市值超1600亿美元 成中国第四大互联网公司
  8. 除权除息对散户是利好还是不利好?
  9. Linux一些基本概念
  10. 如何在Windows平台上基于github搭建个人博客平台
  11. 跳转gridview
  12. 1076 Wifi密码
  13. Pytorch学习笔记7——自定义数据集
  14. Redmi MAX 90 评测 Redmi MAX 90参数
  15. linux 没有可用的缓冲区空间不足,由于系统缓冲区空间不足或队列已满,不能执...
  16. Jquery 中 ajaxSubmit使用讲解
  17. 微信服务号与订阅号的主要区别是什么?
  18. 财路网每日原创推送:区块链+教育,是改革的良性循环?
  19. enq: TX - allocate ITL entry
  20. Qtum量子链应邀出席第24届全美华人金融协会年会

热门文章

  1. iOS原生WebView中JavaScript和OC交互
  2. Linux下C语言的文件操作
  3. deferred对象和promise对象(二)---deferred对象
  4. JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组
  5. 修改shell提示符的显示格式
  6. HYSBZ/BZOJ 1038 [ZJOI2008] 瞭望塔 - 计算几何
  7. 居中弹出一个层,打开一个文件。
  8. COM+在win2003+IIS+MSSQL环境下的部署步骤
  9. Python模块包中__init__.py文件的作用(转载)
  10. JBoss 系列十七:使用JGroups构建块MessageDispatcher 构建群组通信应用