2013-06-23 5 views
10

Sto riscontrando un problema con Spring e l'iniezione del costruttore. Voglio creare oggetti dinamicamente con un nome (String) e un ID speciale (long).L'elemento spring <constructor-arg> deve specificare un riferimento o un valore

Ma quando viene caricato il file spring.xml si verifica un'eccezione.

Exception in thread "main" java.lang.ExceptionInInitializerError

causato da: org.springframework.beans.factory.UnsatisfiedDependencyException: Errore durante la creazione di fagioli con nome 'someBean' definito nella risorsa percorso di classe [primavera. xml]: Dipendenza insoddisfatta espressa tramite argomento costruttore con indice 0 di tipo [lungo]: Tipi di argomento costruttore ambiguo: hai specificato i riferimenti bean corretti come argomenti del costruttore?

mio spring.xml:

<bean id="someBean" class="someClass" > 
     <constructor-arg index="0" type="java.lang.String" value=""/>  
     <constructor-arg index="1" type="long" value=""/> 
    </bean> 
</beans> 

Allora, cosa c'è che non va là? Il costruttore-arg ha indice 1 (e non 0, come l'eccezione dice)

+1

Hai provato con 'type =" java.lang.Long "'? – LaurentG

+0

Sì, ho provato anche quello. Ho rimosso anche l'indice. Ma non ci sono miglioramenti – smsnheck

+1

, dovresti anche condividere come il tuo costruttore sembra veramente – KNU

risposta

10

Negli argomenti del costruttore è possibile utilizzare sia un tipo primitivo long e il valore 0, o un tipo involucro java.lang.Long e un valore vuoto. Inoltre, per tenere le cose sotto controllo, imposterei esplicitamente il valore del secondo argomento su 0.

+0

Ok, sono passato da value = "" a value = "0". Ma il problema esiste ancora – smsnheck

+1

Potresti aggiungere il codice del costruttore di 'someClass' al tuo post? Sei sicuro di passare gli argomenti nell'ordine corretto? – Mikhail

+3

Beh, questo è piuttosto imbarazzante .. Il costruttore era come (id, name) e ho chiamato (name, id). – smsnheck

Problemi correlati