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

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

💡 原文日文,约15600字,阅读约需37分钟。
📝

内容提要

本文介绍了在Spring容器中使用@Autowired注解进行属性注入的过程,包括创建Bean对象、属性赋值、后置处理器等关键步骤。

🎯

关键要点

  • 在 Spring 容器中,属性注入可以通过多种方式实现,包括 @Autowired 注解。
  • Bean 的创建过程从 AbstractAutowireCapableBeanFactory#doCreateBean 方法开始。
  • populateBean 方法负责给 Bean 的属性赋值,@Autowired 注解的属性在此方法中被自动赋值。
  • 后置处理器 AutowiredAnnotationBeanPostProcessor 处理 @Autowired 注解的属性注入。
  • postProcessProperties 方法通过 findAutowiringMetadata 和 inject 方法实现属性注入。
  • findAutowiringMetadata 方法从缓存中获取注入元数据,如果缓存中没有则重新构建。
  • buildAutowiringMetadata 方法查找包含 @Autowired、@Value 和 @Inject 注解的属性和方法。
  • inject 方法遍历 InjectedElement 集合并调用其 inject 方法进行属性注入。
  • resolveFieldValue 方法通过 beanFactory.resolveDependency 方法获取所需的 Bean 对象。
  • doResolveDependency 方法处理多种情况以查找合适的 Bean,确保注入的 Bean 是唯一的。
  • 整体的属性注入流程包括创建 Bean、填充属性、处理后置处理器和最终的属性赋值。
➡️

继续阅读