spring bean的singleton、prototype及ejb3 session bean

本文探讨了EJB3中stateless与stateful bean的区别,并将其与Spring框架中的singleton与prototype作用域进行对比。重点讨论了不同作用域bean注入可能导致的问题及潜在的性能影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值