spring bean 依赖注入的实现

2018-09-03  本文已影响0人  阮一峰的弟子

spring 是如何实现依赖注入功能的呢?@Autowired 注解是如何生效的呢?这主要是通过 AutowiredAnnotationBeanPostProcessor 实现的,它继承了MergedBeanDefinitionPostProcessorInstantiationAwareBeanPostProcessor两个接口通过以下两个步骤来实现此功能。

解析注解

在postProcessMergedBeanDefinition方法中,在字段和方法上根据注解构造出注入元信息InjectionMetadata,并缓存起来。

注入属性

在postProcessPropertyValues方法中,取出缓存中的InjectionMetadata并通过它为bean注入属性。首先通过接口ConfigurableListableBeanFactory.resolveDependency获取依赖的属性值,然后通过反射为bean设置属性值。

@Value

在使用 DefaultListableBeanFactory 时发现,@Value注解也可以实现依赖注入功能,其效果等同于@Autowired,不太理解为何 AutowiredAnnotationBeanPostProcessor 要支持@Value。

上一篇下一篇

猜你喜欢

热点阅读