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

mervynhit 2013-04-22 11:19:30
最近在做小的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的实例,完全不懂为什么,求大神赐教
...全文
131 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intboy 2013-04-22
  • 打赏
  • 举报
回复
spring默认是单类的。
 <bean id="car" class="Car" scope="prototype">
这样试试
lvzg_005 2013-04-22
  • 打赏
  • 举报
回复
考虑这种做法: 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"/>
mervynhit 2013-04-22
  • 打赏
  • 举报
回复
引用 6 楼 lvzg_005 的回复:
?你想在启动的时候加载好car的bean
是的阿
lvzg_005 2013-04-22
  • 打赏
  • 举报
回复
?你想在启动的时候加载好car的bean
mervynhit 2013-04-22
  • 打赏
  • 举报
回复
引用 4 楼 lvzg_005 的回复:
<bean id="car" class="Car" scope="prototype"> 这种方式创建car时,每次都是新的实例
这样需要每次都创建,效率很低啊
lvzg_005 2013-04-22
  • 打赏
  • 举报
回复
<bean id="car" class="Car" scope="prototype"> 这种方式创建car时,每次都是新的实例
mervynhit 2013-04-22
  • 打赏
  • 举报
回复
引用 1 楼 fengspg 的回复:
spring默认是单类的。 XML/HTML code?1 <bean id="car" class="Car" scope="prototype"> 这样试试
可是我希望创建3个单例,应该怎么做
跳蚤图 2013-04-22
  • 打赏
  • 举报
回复

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧