当前位置:首页 > 编程笔记 > 正文
已解决

@Resource注解的原理

来自网友在路上 167867提问 提问时间:2023-10-24 13:52:11阅读次数: 67

最佳答案 问答题库678位专家为你答疑解惑

1.CommonAnnotationBeanPostProcessor是主要逻辑类

2.CommonAnnotationBeanPostProcessor实现接口InstantiationAwareBeanPostProcessor

在bean的实例化过程中,执行populateBean方法中会调用InstantationAwareBeanPostProcessor的postProcessProperties方法

3.CommonAnnotationBeanPostProcessor还实现了MergedBeanDefinitionPostProcessor接口

在bean的实例化过程中,执行doCreateBean方法中会调用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,会填充RootBeanDefinition

4.底层调用逻辑

(1)如果指定@Resource中的name值,则调用beanFactory.getBean(String name,Class<T> requiredType)

(2)如果不指定@Resource中的name值,则按字段名称在beanFactory中搜索存不存在相应的beanDefinition,

不存在则按类型查找,调用ListableBeanFactory的getBeanNamesForType()方法,存在多个则要去找@Primary标记的对象,否则报错NoUniqueBeanDefinitionException

存在,则就按字段名称依赖查询,调用beanFactory.getBean(String name,Class<T> requiredType)

5.@PostConstruct,@PreDestory也是通过CommonAnnotationBeanPostProcessor实现的

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"@Resource注解的原理":http://eshow365.cn/6-23382-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!