Spring应用上下文中所有bean默认都是作为singleton(单例),不管bean被注入多少次都是同一个实例。
Spring的bean作用域分类:
- 单例(Singleton):在整个应用中,只创建bean的一个实例(默认就是单例)
- 原型(Prototype):每次注入或者通过Spring应用上下文获取都会创建一个新的bean实例
- 会话(Session):在web应用中,为每个回话创建一个bean实例
- 请求(Rquest):在Web应用中,为每个请求创建一个bean实例
具体例子
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)//更加安全并且不容易出错
//或者 @Scope("prototype")
public class Cake{...}