扫码阅读
手机扫码阅读

@Autowired 到底是怎么把变量注入进来的?

32 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:@Autowired 到底是怎么把变量注入进来的?
文章来源:
江南一点雨
扫码关注公众号
文章摘要

TienChin项目视频已经完成并采用了Spring Boot和Vue3技术栈。本项目目标是实现超过90%的完成度。其中,将介绍如何使用不同的方法在Spring容器中为属性注入值,包括构造器注入、setter方法注入和使用注解如@Autowired、@Inject、@Resource等。

1. Bean的创建

Bean的创建过程从AbstractAutowireCapableBeanFactory的doCreateBean方法开始,该方法首先创建Bean实例,然后调用populateBean方法为Bean属性赋值,包括标有@Autowired注解的属性。

2. populateBean

populateBean方法负责属性赋值,其中会检查是否需要后置处理器,并通过它们获取需要的值。AutowiredAnnotationBeanPostProcessor后置处理器负责处理@Autowired注解。

3. postProcessProperties

AutowiredAnnotationBeanPostProcessor的postProcessProperties方法分为两步:首先通过findAutowiringMetadata方法寻找注入元数据,然后通过inject方法注入相关依赖。

3.1 findAutowiringMetadata

findAutowiringMetadata方法尝试从缓存中获取元数据,如果缓存中没有,则调用buildAutowiringMetadata方法构建元数据,并将结果存入缓存。

buildAutowiringMetadata方法确定了AutowiredAnnotationBeanPostProcessor构造方法中初始化的autowiredAnnotationTypes变量的值,从而判断当前类是否为候选类。然后,通过反射查找字段和方法上的@Autowired注解,并构建注入元数据。

想要了解更多内容?

查看原文:@Autowired 到底是怎么把变量注入进来的?
文章来源:
江南一点雨
扫码关注公众号