2013-06-23 2 views
10

У меня возникла проблема с впрыском Spring и конструктора. Я хочу создать динамически объекты с именем (String) и специальным идентификатором (long).Элемент Spring <constructor-arg> должен указать ref или значение

Но когда загружается файл spring.xml, возникает исключение.

Исключение в потоке «основного» java.lang.ExceptionInInitializerError

Вызванный: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании боб с именем «someBean» определено в пути класса ресурса [весна. xml]: неудовлетворенная зависимость, выраженная через аргумент конструктора с индексом 0 типа [long]: Неоднозначные типы аргументов конструктора. Вы указали правильные ссылки на bean в качестве аргументов конструктора?

Мой 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> 

Так что же случилось там? Конструктор-Arg имеет индекс 1 (а не 0, как говорит исключение)

+1

Вы пытались с помощью 'type =" java.lang.Long "'? – LaurentG

+0

Да, я тоже это пробовал. Я тоже удалил индекс. Но никаких улучшений – smsnheck

+1

вы также должны поделиться тем, как выглядит ваш конструктор. – KNU

ответ

10

В аргументах конструктора вы можете использовать либо примитивный тип long и значение 0, или тип обертки java.lang.Long и пустое значение. Кроме того, чтобы держать вещи под контролем, я бы установил значение второго аргумента явно равным 0.

+0

Хорошо, я переключился с значения = "" на значение = "0". Но проблема все еще существует – smsnheck

+1

Не могли бы вы добавить код конструктора 'someClass' на ваш пост? Вы уверены, что передаете аргументы в правильном порядке? – Mikhail

+3

Ну, это довольно смущающе. Конструктор был похож на (id, name), и я позвонил (имя, id). – smsnheck