持续更新中。。

spring注解用的是java注解,用到的是java反射机制。

参考文档如下:

http://zxf-noimp.iteye.com/blog/1071765

对应spring源码如下:

调用顺序是由下到上

void org.springframework.beans.factory.annotation.InjectionMetadata.InjectedElement.inject(Object target, String requestingBeanName, PropertyValues pvs) throws Throwable

void org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.processInjection(Object bean) throws BeansException

void org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.AutowiredFieldElement.inject(Object bean, String beanName, PropertyValues pvs) throws Throwable

org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.AutowiredMethodElement.inject(Object bean, String beanName, PropertyValues pvs) throws Throwable

目前的两个问题

1、java是如何获取字段和方法上面的注解?

2、Autowired是如何获取接口对应的实现类?之前是在配置文件中定义接口和其实现类的对应关系,现在没有配置文件了,是如何获取的呢?

第2个问题操作的地方是在

org.springframework.beans.factory.support.DefaultListableBeanFactory.registerSingleton(String beanName, Object singletonObject) throws IllegalStateException

获取被注解的bean=》注册bean中被注解的字段()

sping注解原理的更多相关文章

  1. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  2. java基础解析系列(六)---深入注解原理及使用

    java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer ja ...

  3. Spring 注解原理(三)@Qualifier @Value

    Spring 注解原理(三)@Qualifier @Value Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.Aut ...

  4. Spring 注解原理(一)组件注册

    Spring 注解原理(一)组件注册 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 当我们需要使用 Spring 提供的 ...

  5. java基础解析系列(六)---注解原理及使用

    java基础解析系列(六)---注解原理及使用 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer缓存及 ...

  6. Spring 中常用注解原理剖析

    前言 Spring 框架核心组件之一是 IOC,IOC 则管理 Bean 的创建和 Bean 之间的依赖注入,对于 Bean 的创建可以通过在 XML 里面使用 <bean/> 标签来配置 ...

  7. Spring注解原理

    一.注解的基本概念和原理及其简单实用 注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息提供了一种形式化得方法,使我们可以在稍后某个时刻方便的使用这些数据(通过解析注解 ...

  8. 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...

  9. 简单看看@RequestBody注解原理

    又到了很无聊的时候了,于是随便看看源码假装自己很努力的样子,哈哈哈: 记得上一篇博客随便说了一下RequestBody的用法以及注意的问题,这个注解作为非常常用的注解,也是时候了解一波其中的原理了. ...

随机推荐

  1. call和apply

    在js中经常会看到call和apply,他们实际上就是用于改变this的上下文 经典例子 function pet(words) { this.words=words; this.speak=func ...

  2. 用zepto找到当前被选中的option

    $("#dealer").find("option").not(function(){ return !this.selected }).text(); 神奇的 ...

  3. elasticsearch常用的插件

    deb 安装/usr/share/elasticsearch/   https://github.com/hangxin1940/elasticsearch-cn-out-of-box 包可以参考   ...

  4. Python下划线的使用 _ __ __obj__

    Python 用下划线作为变量前缀和后缀指定特殊变量.   _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名   核心风格:避 ...

  5. javascript book

    我们很欣喜地看到,在设计模式领域,<JavaScript设计模式>(JavaScript Design Patterns)和<JavaScript编程模式>(JavaScrip ...

  6. poj 1606Jugs

    http://poj.org/problem?id=1606 #include<cstdio> #include<cstring> #define MAXN 1000000 u ...

  7. RUBY,玩玩~~~

    我觉得吧,这东瀛的红宝石,也得玩玩,毕竟,RUBY ON RAILS,PUPPET等也是一股力量. 作为混IT圈的,知道总没坏处. 就是感觉和C,C++,JAVA,C#,PHP,甚至PYTHON的感觉 ...

  8. C++类型转换总结

    C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a.C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用. const_cast, ...

  9. 单片机C语言编程规范

    一.基本要求 1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行. 1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序. 1.3 尽量使用标准库函数和公共函数. 1.4 不要 ...

  10. SDUT2087 离散事件模拟-银行管理(模拟)

    题目链接. 分析: 模拟. 果然模拟什么的最讨厌了. 用e1,e2分别记录队列1,队列2的结束时间. 每个结点的s记录开始时间,e一开是记录逗留时间,进队列的时候,改成离开的时间.时刻记录总时间就可以 ...