一、基本使用
- 主要是三个注解的使用,@Autowired,@Value,@Resource
二、实现步骤
- 拦截bean的创建
要想拦截bean,就需要处理spring bean生命周期事件,spring通过一些接口来处理事件,实现属性注入,需要 InstantiationAwareBeanPostProcessor接口来完成。 - 找到注解的字段,并注入值
获取被注解bean,然后从bean容器中中寻找响应类型的bean注入。
三、@Autowired,@Value是如何实现的
- 拦截bean的创建
- AutowiredAnnotationBeanPostProcessor实现了InstantiationAwareBeanPostProcessor接口
- spring-boot 在启动的时候向容器中注入了AutowiredAnnotationBeanPostProcessor
- 找到注解的字段,并注入值
- 通过AutowiredAnnotationBeanPostProcessor.postProcessProperties()和AutowiredAnnotationBeanPostProcessor.postProcessMergedBeanDefinition()两个方法完成
- 每一个需要依赖注入的bean都被封装成了InjectionMetadata对象,每个要备注入的字段被封装成了AutowiredFieldElement对象
三、@Resource是如何实现的
- 拦截bean的创建
- CommonAnnotationBeanPostProcessor实现了InstantiationAwareBeanPostProcessor接口
- spring-boot 在启动的时候向容器中注入了CommonAnnotationBeanPostProcessor
- 找到注解的字段,并注入值
- CommonAnnotationBeanPostProcessor.postProcessProperties()和CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition()两个方法完成
- 每一个需要依赖注入的bean都被封装成了InjectionMetadata对象,每个要备注入的字段被封装成了ResourceElement对象
文章来源地址https://www.toymoban.com/news/detail-438805.html
文章来源:https://www.toymoban.com/news/detail-438805.html
到了这里,关于spring-boot 依赖注入流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!