IOC 操作Bean 管理-bean 作用域

2021-12-31 0 By admin

在Spring 框架里面,设置创建bean 实例是单实例还是多实例,通过scope 作用域属性设置。

一、如何设置单实例还是多实例?

  1. 在spring 配置文件bean 标签里面有属性(scope)用于设置单实例还是多实例
  2. scope 属性值
    1. 默认值,singleton,表示是单实例对象
    2. prototype,表示是多实例对象
    3. request:作用范围是一次请求,和当前请求的转发。
    4. session:作用范围是一次回话。
    5. globalsession:作用范围是一次全局回话。

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

二、singleton 和prototype 比较

设置scope 值是singleton 时候,加载spring 配置文件时候就会创建单实例对象。
单例:

  1. 出生:容器创建,对象就出生了。
  2. 活着:只要容器在,对象就一直存在。
  3. 死亡:容器销毁,对象消亡。

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

多例:

  1. 出生:每次使用时,创建对象
  2. 活着:只要对象在使用中,就一直活着
  3. 死亡:当对象长时间不使用,并且也没有别的对象应用时,由java的垃圾回收器回收。