https://juejin.cn/post/7268533072986456103

在 Spring 框架中,单例模式是通过工厂模式实现的。具体而言,Spring 通过一个工厂类(通常是 BeanFactory 或 ApplicationContext)来管理所有的对象实例,该工厂类负责创建、初始化和缓存所有的单例对象。Spring 框架中的单例模式是一种非常重要的设计模式,下面我们来看一下几个比较重要的应用。

(1)ApplicationContext

ApplicationContext 是 Spring 框架的核心容器,用于管理 Bean 的生命周期和依赖注入。

ApplicationContext 在初始化的过程中会创建多个 Bean 实例,但是 ApplicationContext 本身是以单例模式来实现的。

(2)BeanFactory

BeanFactory 是 Spring 框架中的一个接口,它定义了获取 Bean 的方法。在 Spring 中,可以通过 ApplicationContext 获取 Bean,而 ApplicationContext 实际上是 BeanFactory 的一个实现类。

几乎所有的ApplicationContext实现都是以单例模式实现的,因为ApplicationContext的初始化代价较高,同时它被用来获取Bean,应保证整个应用中只有一个实例。

(3)BeanPostProcessor

BeanPostProcessor是Spring框架中的一个接口,它定义了在Bean初始化前后进行自定义处理的方法。BeanPostProcessor提供了一种拦截器机制,允许我们在Bean被实例化和初始化的过程中进行额外的处理。