Spring框架中singleton的疑惑

12-09-29 Pescod
一般来说singleton作为无状态的bean使用,prototype作为有状态的bean使用

有状态的bean在数据库中有对应的唯一ID,如果在容器中出现多个实例会不会有问题?

banq
2012-09-29 14:13
2012-09-29 04:52 "@Pescod"的内容
如果在容器中出现多个实例会不会有问题 ...


有状态的服务Bean一般用作Session,也就是跟着客户端走;而如果需要和数据库ID唯一的,使用Cache,可以保证全局只有一个实例。

Pescod
2012-09-29 21:33
2012-09-29 14:13 "@banq"的内容
使用Cache,可以保证全局只有一个实例。 ...

这个功能有现成的框架可以用么?
对少量的放在Cache中没问题,如果是大量的就不能放Cache了吧?
如果出现一个ID对应了多个实例不知道会不会出现大的问题,是不是可以忽略?

一般来说DAO这种无状态的Bean是需要使用singleton的。一般情况下也没有性能的问题。但也总会遇到一些特殊的情况,好比一台取款机,一般情况下是没多少人排队的,但也不排除有的时候排队的人特别多或有的人取款特别慢。
如果真的遇到这种情况应该会影响性能吧?该怎么解决呢?


[该贴被Pescod于2012-09-29 21:49修改过]

[该贴被Pescod于2012-10-10 10:58修改过]

banq
2012-10-10 16:46
2012-09-29 21:33 "@Pescod"的内容
如果真的遇到这种情况应该会影响性能吧?该怎么解决呢? ...


无态使用单例,不会存在你说的这种情况,只有有态使用单例,才可能发生多线程共同操作同一个状态资源,发生资源争夺。

猜你喜欢