1.spring中bean的实例是单实例模式的(可以把singleton 设置为false,但是那种方式太耗内存),如果请求量大的话,单实例的bean怎么忙得过来?
事实上,EJB有一个配置属性可以设置bean(statelessBean)的个数的。那么spring如何做才能做到满足大批量调用得问题
2.EJB容器据说对BEAN的管理有线程安全,muti-thread这些得管控. spring 有吗??该如何让spring 达到这样得功能?
最近才在看spring方面的书,只是还没有找到以上答案,麻烦牛人解答一下,谢谢!
各有各的优点,跟boss侃EJB优势,
http://www.infoq.com/cn/articles/ejb3-spring-compare
看看这篇文章,找些关键难懂的跟boss交涉下~ :D :D
[quote]如果请求量大的话,单实例的bean怎么忙得过来?
[/quote]
[quote]muti-thread这些得管控. spring 有吗??[/quote]
这个跟servlet的原理是一样的,
servlet在整个生命周期(init到destory)中就一个,但是它能处理大量的请求,并且这些请求之间无不影响。为什么呢?因为对每一个请求都创建或者从线程池中分配一个thread。
1、单实例并不是单线程,所以不必担心在请求量大的情况下,单实例bean是否忙得过来的问题。在绝大部分多线程环境下,spring的单例模式已经足够了,特别是对于服务型的对象。
2、spring 的线程安全我所了解的可以通过两种方式:1、用synchronized;2、在spring中用prototype的方式配置。
期待牛人的回答!
谁说Spring容器肯定比不上EJB的啊?单例的话要求的是无状态组件,即调用时不影响组件本身状态,而用到的数据都是存在ThreadLocal里的,每个线程都有自己的状态,所以负载量与单例模型无关。EJB当年使用组件池的时候,是因为当时AOP技术还没有发展起来,需要在组件中存放事务上下文等信息,而现在EJB3里已经转向与Spring一样的AOP技术了。