• spring中bean的作用域


    默认情况下,从 bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spring容器只存在一个共享的bean实例,默认的配置。 Prototype: 每次对bean的请求都会创建一个新的bean实例。二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

        在 Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和 global session。如果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的web.xml中增加这么一个ContextListener: org.springframework.web.context.request.RequestContextListener 以上是针对Servlet 2.4以后的版本。比如Request作用域:

        注:有状态的bean:

    每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。 

              无状态的bean:

    bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean 并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。


    简单的说:
    singleton 只有一个实例,也即是单例模式
    prototype访问一次创建一个实例,相当于new。
    应用场合:
    1.需要回收重要资源(数据库连接等)的事宜配置为singleton,如果配置为prototype需要应用确保资源正常回收。
    2.有状态的Bean配置成singleton会引发未知问题,可以考虑配置为prototype。


  • 相关阅读:
    响应式面包屑菜单
    自定义美化UL OL发光列表
    3D立方体图片切换动画
    超酷Loading进度条
    比特币网络的弱点(二)
    比特币网络的弱点
    C++的价值
    《老罗的Android之旅》导读PPT
    系统的思考性能问题
    no_expand优化案例
  • 原文地址:https://www.cnblogs.com/lnas01/p/4972086.html
Copyright © 2020-2023  润新知