首先我们应该知道的是annotation其实是一种interface,它是利用JAVA反射机制提供的API来访问Annotation相关信息,JAVA语言解释器在运行时会忽略这些注释。
@Autowired,进行依赖注入。那在AutowiredAnnotationBeanPostProcessor这个类中初始化方法会将autowired注释加入到需要自动扫描的set集合中。AutowiredAnnotationBeanPostProcessor当中有个postProcessMergedBeanDefinition方法,用来对当前Bean的定义进行修改,这里主要通过findAutowiringMetadata方法找到当前Bean中标注@Autowired注解的属性变量和方法。创建Bean的过程中会调用InjectionMetadata的inject方法通过JAVA反射来注入@Autowired注解的属性变量和方法。