单例和原型bean范围之间的区别。

Spring框架支持五种类型的bean作用域-

  • 辛格尔顿

  • 原型

  • 请求

  • 届会

  • 全球会议

根据春季文件-

Singleton-每个Spring IoC容器返回一个bean实例。该单个实例存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高速缓存的对象。

Spring单例与Java单例不同。在Java中,每个JVM创建一个bean实例,而在春季,每个应用程序上下文创建一个bean实例。

道具类型-

根据春季文件-

Spring不能管理原型bean的完整生命周期:容器实例化,配置或组装原型对象,然后将其交给客户端,而没有该原型实例的进一步记录。因此,尽管在不考虑范围的情况下在所有对象上都调用了初始化生命周期回调方法,但对于原型,则不会调用已配置的销毁生命周期回调。客户端代码必须清除原型作用域内的对象并释放原型Bean所拥有的昂贵资源。

序号单例豆范围原型bean范围
1
实例数
每个Spring IoC容器返回一个bean实例。该单个实例存储在此类单例bean的缓存中,并且对该命名bean的所有后续请求和引用都返回缓存的对象
每次注入/查找新对象时都会创建一个。X()每次都会使用new
2
范围
在Spring中,bean的默认范围是Singleton
这不是Spring中bean的默认范围
3
豆创作
它是在应用程序上下文初始化期间创建的
每当调用它时都会创建它。
4
状态/无状态
它用于所有无状态的bean
它用于具有状态的bean

单例和原型示例

<bean id="xyzService" class="com.xyz.XyzService" scope="singleton"/>

<bean id="xyzService" class="com.xyz.XyzService" scope="prototype"/>