日期:2014-05-19  浏览次数:20671 次

spring bean配置问题
有一个同事写的代码如下
<bean id="JMHS05120030" class="com.dcits.jsds.work.sxhs.service.impl.CommonServiceImpl" scope="prototype">
<property name="manager" ref="commonHsManager"/>
</bean>
<bean id="JMHS05120040" class="com.dcits.jsds.work.sxhs.service.impl.CommonServiceImpl" scope="prototype">
<property name="manager" ref="commonHsManager"/>
</bean>
... ...
<bean id="JMHS05120040" class="com.dcits.jsds.work.sxhs.service.impl.CommonServiceImpl" scope="prototype">
<property name="manager" ref="commonHsManager"/>
</bean>
让后再根据不同条件从数据库取出bean名:比如 JMHS05120040
使用SpringStarter.getInstance().getContext().getBean(“JMHS05120040”)调用bean,并操作.

明明都一样的类配置那么多遍干什么?在我印象中只要配置一个bean,让后只调用这一个bean就可以了吧,scope="prototype"时,反正每一次都是new。不需要配置那么多的bean吧!有人对这个了解吗?知道我同事写的是不是多余了,还是有什么好处呢?

------解决方案--------------------
除非是为了以后可以更换实现类或配置项而先做预留,没看出来还有其它好处。
------解决方案--------------------
探讨
需要问的问题说白了:就是同一个类配置的多个bean,获取的多个bean实例和配置的一个bean获取的多个实例是不是一样的!
我们的用户量很大,同事的做法可以提高访问量吗?或者线程发面有优化吗?

------解决方案--------------------
没发现什么好处!spring Ioc 需要的时候是由spring来new的啊!鉴定完毕!
------解决方案--------------------
探讨
如果你就配置一个BEAN id=JMHS05120030,那他从数据库查出来的是JMHS05120040,他去JMHS05120030哪找这个BEAN?
除非你把数据库里的值改了,都改成JMHS05120030

------解决方案--------------------
创建多个实例,具体有什么好处,就要看项目需求了。
------解决方案--------------------
没啥好处,就是多余