默认情况下,Spring Bean是单例还是多例?
参考回答
默认情况下,Spring中的Bean是单例(Singleton)作用域的。也就是说,Spring容器会为每个Bean类型创建一个唯一的实例,并且在容器的整个生命周期内,所有对该Bean的请求都会返回相同的实例。
详细讲解与拓展
1. 单例作用域(Singleton Scope)
- 定义:Spring容器中默认的作用域是单例,意味着每个Bean在容器中只有一个实例。每次请求这个Bean时,Spring会返回相同的实例。
- 适用场景:适用于那些在整个应用中只需要一个实例的Bean,例如服务类、工具类等。
- 生命周期:Spring容器在启动时会创建单例Bean的实例,并且在容器的整个生命周期中,该Bean实例都会保持不变,直到容器销毁。
示例:
XML配置:
在这个例子中,MyService
Bean的作用域是单例的,Spring容器只会创建一个MyService
实例,所有使用该Bean的地方都将使用同一个实例。
2. 多例作用域(Prototype Scope)
- 定义:如果Bean的作用域被设置为多例(Prototype),则每次从容器中请求该Bean时,都会创建一个新的实例。
- 适用场景:适用于每次请求都需要不同实例的Bean,例如临时状态的对象、计算过程中的临时对象等。
- 生命周期:每次请求时都会创建一个新的Bean实例。Spring容器在请求Bean时才会创建该Bean,而不会在容器启动时创建。
示例:
XML配置:
在这个例子中,MyPrototypeService
Bean的作用域是多例的,每次请求myPrototypeService
时,Spring容器都会创建一个新的实例。
总结
- 默认情况下,Spring的Bean是单例作用域,容器只会为每个Bean类型创建一个实例,并且在容器生命周期内共享这个实例。
- 通过使用
@Scope("prototype")
注解或在XML配置中指定scope="prototype"
,可以将Bean的作用域改为多例,从而每次请求都会创建新的实例。
如果你没有显式地定义作用域,那么Spring会假定你使用的是单例作用域。
阅读全文
人机验证(防爬虫)
扫码关注公众号:帅地玩编程
发送: 验证码
提醒:提交验证后记得刷新当前页面

提交