Por mismas fuentes descubrir mi colega:
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)
mientras mis servidores host, prueba y producción no tienen tal error.
Con:
<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>
mientras que hay solamente un constructor de 3-args en frijol.
Motivo para usar el constructor: realiza algunas acciones adicionales en la biblioteca que no es Spring invocando el método init()
. Y establece args como campos.
así que cambio spring-beans.xml
a:
<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>
tomar la atención a init-method=
parte.
ACTUALIZACIÓN Después de todo, escribí configuración XML simple y paso a través del código fuente Spring en el depurador. Parece que con la primavera 3.x es posible combinar constructor-arg y propiedad en XML frijol definición (comprobar doCreateBean en AbstractAutowireCapableBeanFactory.java
, que llaman createBeanInstance y populateBean siguiente).
Ver también https://softwareengineering.stackexchange.com/questions/149378/both-constructor-and-setter-injection-together-in-spring/
¿Qué versión de la primavera? Funciona bien para mí con Spring 3.0.5. Además, intente configurar solo uno o el otro. Mi suposición es que tu problema no tiene nada que ver con mezclar propiedad y constructor-arg. – Damien
Esta sintaxis está bien. ¿Estás seguro de que no estás tratando de usar 'cRef' de * dentro de * el constructor, porque no se habrá establecido en ese punto. – skaffman
Comenzar con una sola letra minúscula para un frijol puede causar problemas con Spring, Jackson y otros que dependen de la especificación del frijol. Si cambiaste la propiedad a myCRef, ¿solucionó el problema? – Hazok