欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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);
}

Bean的作用域之singleton和prototype
返回的对象地址相同,说明是单实例

(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>

Bean的作用域之singleton和prototype
返回的对象地址不同,说明是多实例

<3>singleton和prototype区别:

  • singleton——单实例,prototype——多实例
  • 设置scope值是singleton时候,加载spring配置文件时(ApplicationContext)就会创建单实例对象;设置scope值是peototype时候,不是在加载spring配置文件时候创建对象,而是在调用getBean方法时候创建多实例对象

另外更详细的描述:
通俗易懂spring之singleton和prototype

相关标签: spring java