当前位置: 代码迷 >> J2EE >> 一个关于Spring的有关问题,怎么注入一定数量的Bean
  详细解决方案

一个关于Spring的有关问题,怎么注入一定数量的Bean

热度:147   发布时间:2016-04-22 03:13:08.0
一个关于Spring的问题,怎么注入一定数量的Bean。
例如:现在有类A及类B,在Spring中配置类A的Bean a及类B的Bean b,其中a的scope为prototype,其中a有许多配置参数且已在配置文件中配置好了。
问题是:Bean b有对类A对象数组的引用且它的数量是动态配置的,即在配置文件中,可由一个属性aNum来指定。例如:若aNum指定为5,那么就应该由Spring注入5个不同的bean a。
本人仅想到了的方法:用后置处理器,但在后置处理器中怎么访问Spring容器?Spring机制中,容器如何把自己注入到Bean中?。或者有其它更好的使用Spring的办法来实现这一特性?要求就是在类B中不要出现Spring类。
不好意思,本人刚刚用Spring开发项目。所以请高手来出出招。

------解决方案--------------------
...你五个A类,和一个A类有什么区别?
感觉B的设计得有点问题
如果非要这样的话,你就可以写五个A配置,然后在B的相关配置中指向五个A的Bean



------解决方案--------------------
探讨
...你五个A类,和一个A类有什么区别?
感觉B的设计得有点问题
如果非要这样的话,你就可以写五个A配置,然后在B的相关配置中指向五个A的Bean

------解决方案--------------------
我觉得技术上简单点,但配置稍微复杂点的做法是使用Set或者list注入:

例如:
XML code
<beans>        <!-- oracle bean used for a few examples -->    <bean id="A1" name="A1" class="com.pkg.ClassA"/>    <bean id="A2" name="A2" class="com.pkg.ClassA"/>    <bean id="A3" name="A3" class="com.pkg.ClassA"/>    <!-- collection injection -->    <bean id="B" class="com.pkg.ClassB">        <property name="AClsList">            <list>                <ref local="A1"/>                <ref local="A2"/>            </list>        </property>    </bean></beans>
------解决方案--------------------
探讨
引用:
...你五个A类,和一个A类有什么区别?
感觉B的设计得有点问题
如果非要这样的话,你就可以写五个A配置,然后在B的相关配置中指向五个A的Bean


关键楼主是要动态配置A的个数,并不是五个A类,而是N个A对象,N不定。

这有可能,比如,用于动态线程数调整,来起到性能调优的目的。
  相关解决方案