持续更新中。。
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中被注解的字段()