IOC操作Bean管理XML方式(bean的作用域)

目录

IOC操作Bean管理XML方式(bean的作用域)

1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式

(1)在Spring 配置文件bean 标签里面有属性(scope)用于设置单实例还是多实例

(2)scope 属性值

(3)singleton 和 prototype 的区别

2.在Spring 里面,默认情况下,bean 是单实例对象

实验步骤:

结果如下:

结论:

掌握:


 

 

 

IOC操作Bean管理XML方式(bean的作用域)

 


单实例:顾名思义就是一个类只有一个实例,并且类负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。例如:一个餐桌就是一个单实例,每个人都可以用,但是它仅有一个

多实例:每次都新建一个对象 

1.在Spring 里面,设置创建 bean 实例是单实例还是多实例的方式

(1)在Spring 配置文件bean 标签里面有属性(scope)用于设置单实例还是多实例

(2)scope 属性值

第一个值:默认值 singleton,表示是单实例对象

第二个值:非默认 prototype,表示是多实例对象

测试效果:

很明显看到两个对象的地址不一样,证明不是同一个对象

 

(3)singleton 和 prototype 的区别

主要体现在创建的时机不一样

scope设置为singleton 的时候,加载 spring 配置文件的时候就会创建单实例对象

scope设置为prototype 的时候,不是在加载spring 配置文件时候创建对象,而是在调用 getBean 方法的时候才会创建多实例对象  

补充两个scope的属性(使用频率很低):

request:request表示一次请求,每次创建对象,会放到request的域对象中

session:session表示一次会话,每次创建对象,会放到session的域对象中

 

 

2.在Spring 里面,默认情况下,bean 是单实例对象

方法:把一个对象获取多次,然后输出,输出后比较两个对象的地址,如果地址相同,则是单实例对象

实验步骤:

在TestSpring5Demo 测试类中的代码如下:

把book对象获取多次,输出结果:

package com.lbj.spring5.testdemo;

import com.lbj.spring5.collectiontype.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpring5Demo1 {

    @Test
    public void tsetCollection4(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean2.xml");
        Book book1=context.getBean("book", Book.class);
        Book book2=context.getBean("book", Book.class);
        System.out.println(book1);
        System.out.println(book2);
    }
}

 

结果如下:

地址相同

 

结论:

默认情况下,bean 是单实例对象

 

掌握:

在bean中如何设置多实例和单实例 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值