Bean的作用域之singleton和prototype
程序员文章站
2022-05-24 10:49:48
...
Bean的作用域
1、在Spring里面,可以设置创建的bean实例是单实例还是多实例
2、在Spring里面,默认情况下,bean是单实例对象
例如:
//通过比较对象地址,测试bean是单实例还是多实例
@Test
public void test(){
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
Book book1 = context.getBean("book",Book.class);
Book book2 = context.getBean("book",Book.class);
System.out.println(book1);
System.out.println(book2);
}
返回的对象地址相同,说明是单实例
(3)如何设置单实例还是多实例
<1>在spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例
<2>scope属性值
- singleton(默认):表示单实例对象
- peototype:表示多实例对象
- request
- session
例:
<!--xml-->
<bean id="book" class="com.hmkj.spring5.collectiontype.Book" scope="prototype">
<property name="list" ref="bookList"></property>
</bean>
返回的对象地址不同,说明是多实例
<3>singleton和prototype区别:
- singleton——单实例,prototype——多实例
- 设置scope值是singleton时候,加载spring配置文件时(ApplicationContext)就会创建单实例对象;设置scope值是peototype时候,不是在加载spring配置文件时候创建对象,而是在调用getBean方法时候创建多实例对象
另外更详细的描述:
通俗易懂spring之singleton和prototype
推荐阅读
-
spring IOC之Bean的scope属性值:prototype与singleton
-
spring IOC之Bean的scope属性值:prototype与singleton
-
Java Bean的作用域,生命周期和注解
-
bean的作用域、初始化和销毁方法及生命周期
-
Spring中Bean的作用域singleton和prototype
-
初学Spring——Bean的作用域(singleton单例+prototype原型)
-
Spring框架——Bean的作用域(singleton和prototype)
-
Bean的作用域之singleton和prototype
-
Spring Bean的作用域之prototype
-
spring——singleton和prototype作用域