Spring 如此流行的一大原因就是它实现了各种解耦,其中之一就是大名鼎鼎的“依赖注入”,也叫控制反转。将bean的加载和实例化的权利交给容器,然后在程序里面告诉容器,我要什么,容器根据需求,给你什么。而不是像传统的开发方式一样,用到什么自己去“制造”。

代码层面的解读参见几篇文章:

问题

本文对这个系列做一个梳理。我想以下四个问题的答案大概能解答 Spring 的依赖注入这一块的实现机制了吧!

  1. Spring是如何加载 bean 定义的?
  2. Spring将已经加载好的 bean 定义存储在什么地方?
  3. Spring是如何实例化 bean对象的?
  4. Spring 又是如何根据需求,为你提供注入服务?

下面我们将带着以上问题,开始我们的探究历程。

Spring是如何加载 bean 定义

Spring将已经加载好的 bean 定义存储在什么地方

Spring是如何实例化 bean对象

Spring 如何根据需求,提供注入服务