在 Spring 中,你可以通过配置来指定是否创建单例(Singleton)或多实例(Prototype)的 Bean。默认情况下,Spring 创建的 Bean 是单例的,但你也可以显式地设置为多实例。
单例(Singleton):
单例是指在 Spring 容器中只会创建一个 Bean 实例,然后共享给所有需要的地方。
在 XML 配置文件中,可以使用 singleton 属性来显式设置 Bean 的范围为单例(默认为单例):
<bean id="myBean" class="com.example.MyBean" scope="singleton">
<!-- Bean 的属性配置 -->
</bean>
在 Java 配置类中,使用 @Scope 注解来设置 Bean 的范围为单例:
@Configuration
public class MyConfig {
@Bean
@Scope("singleton")
public MyBean myBean() {
return new MyBean();
}
}
多实例(Prototype):
多实例是指每次从 Spring 容器中获取 Bean 时,都会创建一个新的 Bean 实例。
在 XML 配置文件中,可以使用 singleton 属性将 Bean 的范围设置为多实例:
<bean id="myBean" class="com.example.MyBean" scope="proptype">
<!-- Bean 的属性配置 -->
</bean>
在 Java 配置类中,使用 @Scope 注解并设置值为 "prototype" 来将 Bean 的范围设置为多实例:
@Configuration
public class MyConfig {
@Bean
@Scope("prototype")
public MyBean myBean() {
return new MyBean();
}
}
注意:
设置为单例时,加载配置文件或者配置类时,就会创建实例
而设置为多实例时,是在调用getBean方法时,才创建多实例对象