返回

Spring5源码探秘:Bean创建及初始化(上)

后端

在Spring框架中,Bean的生命周期是一个非常重要的概念,它决定了Bean的创建、初始化、使用和销毁的过程。而Bean的创建过程又是整个生命周期的开端,对Spring框架的理解和使用至关重要。

在Spring 5中,Bean的创建过程主要涉及三个核心方法:

  • getSingleton(): 如果Bean是单例模式的,那么就会调用该方法来获取Bean的实例。

  • createBean(): 该方法负责创建Bean的实例。它会根据Bean的定义信息,通过反射机制来创建Bean的实例。

  • doCreateBean(): 该方法是createBean()方法的具体实现,它会完成Bean实例的创建、属性设置、生命周期回调等工作。

接下来,我们就来详细分析这三个核心方法,以便更好地理解Spring Bean的创建过程。

1. getSingleton()

getSingleton()方法的作用是获取Bean的实例。如果Bean是单例模式的,那么Spring容器就会在第一次调用该方法时创建Bean的实例,并将其缓存起来,以便以后的调用可以直接从缓存中获取。

getSingleton()方法的实现非常简单,它首先会检查Bean是否已经存在于缓存中。如果已经存在,那么就直接返回缓存中的Bean实例。如果不存在,那么就会调用createBean()方法来创建Bean的实例,并将创建好的Bean实例缓存起来,以便以后的调用直接从缓存中获取。

2. createBean()

createBean()方法是Spring Bean创建过程的核心方法。它负责根据Bean的定义信息,通过反射机制来创建Bean的实例。

createBean()方法的实现比较复杂,它涉及到很多细节。这里我们只介绍一些关键的步骤:

  • 首先,createBean()方法会根据Bean的定义信息获取Bean的Class对象。

  • 然后,它会通过反射机制来创建Bean的实例。

  • 最后,它会将创建好的Bean实例返回给调用者。

3. doCreateBean()

doCreateBean()方法是createBean()方法的具体实现。它会完成Bean实例的创建、属性设置、生命周期回调等工作。

doCreateBean()方法的实现非常复杂,它涉及到很多细节。这里我们只介绍一些关键的步骤:

  • 首先,doCreateBean()方法会检查Bean是否已经存在于缓存中。如果已经存在,那么就直接返回缓存中的Bean实例。

  • 如果不存在,那么就会调用createBean()方法来创建Bean的实例。

  • 然后,它会对创建好的Bean实例进行属性设置。

  • 最后,它会调用Bean的初始化方法,完成Bean的初始化工作。

至此,Spring Bean的创建过程就结束了。接下来,Bean就可以被注入到其他Bean中使用了。

相信通过对Spring Bean创建过程的分析,您对Spring框架的理解又深了一步。在以后的使用中,您就可以更加得心应手了。