在同一消息来源,我的同事发现:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'service.MenuService#0'
defined in class path resource [spring-beans/integrator.xml]:
Could not resolve matching constructor (hint: specify index/type/name
arguments for simple parameters to avoid type ambiguities)
,而我的主人,测试和生产服务器有没有这样的错误。
有了:
<bean class="service.MenuService">
<constructor-arg index="0" type="java.lang.String" value="#{user}"/>
<constructor-arg index="1" type="java.lang.String" value="#{password}"/>
<constructor-arg index="2" type="java.lang.String" value="#{uri}"/>
<property name="system" value="OPRT"/>
<property name="client" value="OPRT"/>
</bean>
同时也有只有一个豆3参数的构造。
使用构造函数的原因 - 它通过调用init()
方法在非Spring库上执行一些其他操作。并将args设置为字段。
所以我改变spring-beans.xml
到:
<bean class="service.MenuService" init-method="init">
<property name="login" value="#{user}"/>
<property name="password" value="#{password}"/>
<property name="httpsUrl" value="#{uri}"/>
<property name="system" value="OPRT" />
<property name="client" value="OPRT" />
</bean>
以关注init-method=
一部分。
UPDATE毕竟我写了简单的XML配置,并在调试器中通过Spring源代码。似乎与春天3.X有可能构造 - 精氨酸和财产在XML 豆定义组合(检查doCreateBean在AbstractAutowireCapableBeanFactory.java
,其中要求createBeanInstance和populateBean下一个)。
另请参见https://softwareengineering.stackexchange.com/questions/149378/both-constructor-and-setter-injection-together-in-spring/
哪个版本的Spring? Spring 3.0.5对我来说工作得很好。另外,尝试设置一个或另一个。我的猜测是你的问题与混合property和constructor-arg无关。 – Damien 2011-03-01 03:47:20
这个语法很好。你确定你没有试图在构造函数的*里使用'cRef',因为它不会被这个点设置。 – skaffman 2011-03-01 09:56:28
从一个bean的单个小写字母开始,可能会给Spring,Jackson和其他依赖于bean规范的人带来麻烦。如果您将该属性更改为myCRef,它是否解决了该问题? – Hazok 2016-02-22 21:35:33