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的唯一性。