Spring中的单例模式是通过Bean实例的缓存来实现的。当Spring容器创建一个Bean时,它首先检查是否已经存在一个该类型的Bean的实例,如果已经存在就返回现有的实例,否则就创建一个新的实例并缓存起来,下次请求时再返回缓存中的实例。
具体实现方式如下:
<bean id="exampleBean" class="com.example.ExampleBean" scope="singleton">
</bean>
默认情况下,Spring容器创建的Bean都是单例的,即在整个应用程序中只有一个实例被创建和维护。
可以在Bean的配置文件中通过设置scope属性为"singleton",来显式地声明该Bean为单例的,如下所示:
Spring还可以支持自定义的作用域,例如“prototype”等,通过实现Scope接口来完成。一个Scope的实现只需要 override Scope#get() 方法返回一个对象,这个对象需要是线程安全的,以及实现一些生命周期方法,如registerDestructionCallback来释放资源等。
总结起来,Spring通过缓存已经创建的Bean的实例来实现单例模式,既提高了应用程序的执行效率,又能够保证Bean的唯一性。