Spring Bean的加载机制及其作用域

Bean加载

  • 默认情况下:Bean在applicationContext容器启动的时候会进行创建并且进行预实例化,属性值设置为默认值,当bean被调用的时候,读取bean配置元数据,配置bean,如果beanA属性值为beanB,则先配置beanB,再配置beanA
  • 对于单例的bean,会在ioc容器启动的时候,创建,读取配置元数据,完全实例化bean
  • 可以配置bean懒加载,lazy-init =true,懒加载的bean会在初次被调用的时候被创建
    • 对于lazy-bean是single-bean的属性时,lazy-bean不会执行懒加载,会在ioc被创建时,完全实例化配置给single-bean

Bean scope

  • Single-ton scope:(default)
    1. 单例bean  默认状态是单例的
    2. 相比较设计模式中的单例模式,单例模式是每个classloader一个对象,单例bean是每个application container一个bean
    3. single bean在contanier初始化的时候加载一次,(创建-实例化-配置数据),之后存在spring container catch中,每次调用取同一个bean
  • protoype scope(@Scope("protoype"))
    1. 原型bean , 每次请求,会根据bean定义 去创建新的bean ,一般用作status
    2. Spring contanier只管理prototyoe bean 的 创建 实例化 配置 生命周期,之后交给client  client负责去销毁bean并释放资源
    3. 如果Single bean 属性是prototype bean 则 prototype bean 也是在container初始化的时候 配置完毕,并且保持单例,每次请求不会去创建新的prototype bean ,如果想要改变,可以使用方法注入(set方法)
  • Request scope:(@RequestScope)
    1. 生命周期和http 请求同级,每次新的http请求会创建新的bean
    2. 在一个http请求内更改bean属性,其余http的bean不受影响
  • Session scope:(@SessionScope)
    1. 生命周期和http session请求同级,每次不同的http session 会创建新的bean
    2. 在一个http session内更改bean属性,其余http session的bean不受影响
  • Application scope:(@ApplicationScope)
    1. 生命周期和ServletContext请求同级,每次不同的ServletContext会创建新的bean,存储在ServletContext属性中
    2. 在一个ServletContext内更改bean属性,其余ServletContext的bean不受影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值