📅  最后修改于: 2023-12-03 15:01:32.199000             🧑  作者: Mango
在 Java Spring 框架中,Bean 可以被配置为单例(Singleton)或原型(Prototype)范围。这个范围决定了在容器中创建的 Bean 的实例化和管理方式。本文将介绍这两种范围的概念和使用方法。
单例范围是默认的 Bean 范围,也是最常用的范围。在单例范围下,每个 Bean 定义只会有一个实例存在于整个应用程序的生命周期中。无论在容器中多少次请求相同的 Bean,都会返回同一个实例。
@Configuration
public class AppConfig {
@Bean
public MySingletonBean mySingletonBean() {
return new MySingletonBean();
}
}
在上面的配置中,MySingletonBean
被声明为一个单例 Bean。当其他组件依赖注入或使用 mySingletonBean
时,都将得到同一个实例。
原型范围指定每次从容器中获取 Bean 时都会创建一个新的实例。即使多次请求相同的 Bean,也会返回不同的实例。
@Configuration
public class AppConfig {
@Bean
@Scope("prototype")
public MyPrototypeBean myPrototypeBean() {
return new MyPrototypeBean();
}
}
在上述配置中,MyPrototypeBean
被声明为原型 Bean。每次使用 myPrototypeBean
时,都会创建一个新的实例。
单例和原型范围的主要区别在于实例化和管理方式。单例范围适用于需要共享状态的组件,而原型范围适用于每次使用都需要一个新实例的组件。
决定选择哪种范围时,需要考虑以下因素:
选择合适的范围取决于具体的应用需求,可以根据实际情况来决定使用单例范围还是原型范围。
参考文档:Spring Bean Scopes