在 Spring 框架中,创建类的实例一般是根据你所定义的 Bean 的 作用域(Scope)来决定的。Spring 提供了多种作用域配置,常见的有以下两种:
1. Singleton(单例)
- 默认作用域: 当你不指定作用域时,Spring 默认会将 Bean 的作用域设为单例。
- 实例数量: 对于单例 Bean,Spring 容器在启动时只会创建一个实例,并在整个应用的生命周期中共享这个实例。也就是说,在整个 Spring 容器中,无论调用多少次,都只会使用同一个对象。
示例代码:
import org.springframework.stereotype.Component;
@Component
public class MySingletonBean {
// 只有一个实例
}
在这个例子中,MySingletonBean
在 Spring 容器中总是只有一个实例。
2. Prototype(原型)
- 创建新的实例: 如果将 Bean 的作用域设为原型,每次请求这个 Bean 时,Spring 容器都会创建一个新的实例。
- 实例数量: 所以在这种情况下,创建的实例数量是可以是多个的,具体取决于你请求的次数。
示例代码:
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class MyPrototypeBean {
// 每次请求都会创建一个新实例
}
在这个例子中,MyPrototypeBean
的每次请求都会得到一个新的实例。如果你请求三次,就会创建三个不同的对象。
结论
- 单例模式: Spring 容器中只会创建一个实例,整个应用共用。
- 原型模式: 每次请求都会创建一个新的实例,实例数量由请求次数决定。
所以,创建类的实例可以是一个,也可以是多个,这取决于定义的作用域。如果是单例,则只创建一个;如果是原型,则可以创建多个。