论坛首页 Java企业应用论坛

spring bean的singleton、prototype及ejb3 session bean

浏览 3421 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-03   最后修改:2009-03-03
    读EJB3 In Action的时候,看到了stateless bean和stateful bean,忽然想起了spring的singleton和prototype作用域的bean,EJB3 的stateful bean需要注意性能问题,spring prototype作用域的bean(spring的原话:对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责)也是性能问题,而且是非常的相似!EJB3 stateless bean可以池化,而spring singleton的作用域的bean容器只生成一份(也是无状态的)。
    下面是问题的关键:在EJB3 in Action里有这样的话,切记不要把stateful bean注入stateless bean,于是我想到了是不是也不应该把spring的prototype作用域的bean注入到sington作用域的bean?我的答案是肯定的。因为无论把那种bean相互注入,都不会出错,只会导致运行时异常(而且这个不容易发现,只有并发用户访问才会有),而我们的开发人员开发时,往往不出错误就认为程序没问题。在这里讨论一下,有利于使用spring搭建系统的用户思考。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics