天天看点

(II)第七节:bean 的作用域

  在 spring 中,可以在 <bean> 元素的 scope 属性里设置 bean 的作用域,以决定这个 bean 是单实例的还是多实例的。

  默认情况下,spring 只为每个在 ioc 容器里声明的 bean 创建唯一一个实例(spring 中默认是单例的 bean),整个 ioc 容器范围内都能共享该实例;

  所有后续的 getbean() 调用和  bean 引用都将返回这个唯一的 bean 实例,该作用域被称为 singleton,它是所有 bean 的默认作用域。

  scope 用于设置 bean 的作用域,其取值有 singleton | prototype | request | session

singleton:单例,唯一实例,默认的 prototype:原型,多例的(java中默认情况) request:在web环境下,同义词请求创建一个bean实例,在一次请求中创建一个 bean  session:在web环境下,同义词请求创建一个bean实例,在一次会话中创建一个 bean
(II)第七节:bean 的作用域

singleton:单实例的,默认的

  (1)在容器启动完成之前就已经创建好对象,保存在容器中了;

  (2)任何获取都是获取之前创建好的那个对象;

prototype:多实例的

  (1)容器启动默认不会去创建多实例 bean;

  (2)获取的时候创建多实例 bean;

  (3)每次获取都会创建一个新的对象;

注意:

    当 bean 的作用域为单例时,spring 会在 ioc 容器初始化时就创建 bean 的对象实例;

    而当 bean 的作用域为 prototype 时,ioc 容器会在获取 bean 的实例时创建 bean 的实例对象(即在使用 bean 时,才进行创建实例对象)

  配置bean 的作用域:

  测试代码:

上一篇: 第七次作业
下一篇: 第七次作业