当前位置:编程学习 > JAVA >>

关于spring的一些问题,求大神指教,急~~~~~

最近在做小的spring项目,遇到一个问题

比如有一个类叫Carholder里面有一个属性叫car,还有一个类叫Car

现在我想创建三个Car的实例

  
<bean id="car1" class="Car">
<bean id="car2" class="Car">
<bean id="car3" class="Car">

还有3个Carholder实例
<bean id="carholder1" class="Carholder">
    <property name="car" ref="car1"></property>
</bean>
<bean id="carholder2" class="Carholder">
    <property name="car" ref="car2"></property>
</bean>
<bean id="carholder3" class="Carholder">
    <property name="car" ref="car3"></property>
</bean>

Carholder里面有getter setter方法,但是setter方法没有被调用

但是如果我把car1改成car,其他不变
<bean id="car" class="Car">
<bean id="car2" class="Car">
<bean id="car3" class="Car">
<bean id="carholder1" class="Carholder">
    <property name="car" ref="car"></property>
</bean>
<bean id="carholder2" class="Carholder">
    <property name="car" ref="car2"></property>
</bean>
<bean id="carholder3" class="Carholder">
    <property name="car" ref="car3"></property>
</bean>

结果carholder1,carholder2,carholder3都注入成功,但是car注入的是第一个car的实例,完全不懂为什么,求大神赐教 Spring Bean 类 实例 --------------------编程问答-------------------- spring默认是单类的。
 <bean id="car" class="Car" scope="prototype">

这样试试 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 1 楼 fengspg 的回复:
spring默认是单类的。
XML/HTML code?1 <bean id="car" class="Car" scope="prototype">
这样试试


可是我希望创建3个单例,应该怎么做 --------------------编程问答-------------------- <bean id="car" class="Car" scope="prototype">
这种方式创建car时,每次都是新的实例 --------------------编程问答--------------------
引用 4 楼 lvzg_005 的回复:
<bean id="car" class="Car" scope="prototype">
这种方式创建car时,每次都是新的实例

这样需要每次都创建,效率很低啊 --------------------编程问答-------------------- ?你想在启动的时候加载好car的bean --------------------编程问答--------------------
引用 6 楼 lvzg_005 的回复:
?你想在启动的时候加载好car的bean

是的阿 --------------------编程问答-------------------- 考虑这种做法:
1:类car提供三个静态工厂方法,每个方法都返回new Car();
然后配置bean实例
比如:

<bean id="car" class="" factory-method="createInstance"/>
<bean id="car2" class="" factory-method="createInstance2"/>
<bean id="car3" class="" factory-method="createInstance3"/>

2.专门提供一个工程类,编写三个工长方法,每个方法返回new Car();

<bean id="carFactory" class="">
<!-- inject any dependencies required by this  bean -->
</bean>

<bean id="car"
    factory-bean="carFactory"
    factory-method="createCarInstance"/>
<bean id="car2"
    factory-bean="carFactory"
    factory-method="createCarInstance2"/>
<bean id="car3"
    factory-bean="carFactory"
    factory-method="createCarInstance3"/>
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,