2013-06-23 8 views
10

Mam problem z wtryskiem sprężyny i konstruktora. Chcę utworzyć dynamicznie obiektów o nazwie (String) i specjalny identyfikator (long).Wiosna <constructor-arg> element musi określać wartość ref lub wartość

Ale po załadowaniu pliku spring.xml pojawia się wyjątek.

Wyjątek nici „głównym” java.lang.ExceptionInInitializerError

spowodowane przez: org.springframework.beans.factory.UnsatisfiedDependencyException: Błąd tworzenia ziarna o nazwie "someBean zdefiniowanej w źródło ścieżki klasy [sprężyny. xml]: Niezadowolona zależność wyrażona przez argument konstruktora z indeksem 0 typu [long]: Niejednoznaczne typy argumentów konstruktora - czy określono poprawne odwołania do komponentu bean jako argumenty konstruktora?

Moja 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> 

Więc co jest nie tak? Konstruktor-arg ma indeks 1 (a nie 0, jak mówi wyjątek)

+1

Czy próbowałeś z 'type =" java.lang.Long "'? – LaurentG

+0

Tak, próbowałem również. Usunąłem też indeks. Ale bez usprawnień – smsnheck

+1

powinieneś również udostępnić, jak twój konstruktor naprawdę wygląda. – KNU

Odpowiedz

10

w argumenty konstruktora można użyć prymitywny typ long i wartość 0 lub typu wrapper java.lang.Long i pusta wartość. Ponadto, aby utrzymać wszystko pod kontrolą, ustawiłbym wartość drugiego argumentu jawnie na 0.

+0

OK, zmieniłem z wartości = "" na wartość = "0". Ale problem nadal istnieje – smsnheck

+1

Czy możesz dodać kod konstruktora 'someClass' do swojego postu? Czy jesteś pewien, że przekazujesz argumenty we właściwej kolejności? – Mikhail

+3

Cóż, to bardzo kłopotliwe .. Konstruktor był jak (id, nazwa) i ja nazwałem (name, id). – smsnheck