Bean的作用域之singleton和prototype

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值