2013-06-23 35 views
10

Tôi đang gặp sự cố với việc tiêm Spring và constructor. Tôi muốn tạo các đối tượng động với tên (String) và id đặc biệt (long).Phần tử Spring <constructor-arg> phải chỉ định giá trị ref hoặc giá trị

Nhưng khi tệp spring.xml được tải ngoại lệ xảy ra.

Exception in thread "main" java.lang.ExceptionInInitializerError

Nguyên nhân: org.springframework.beans.factory.UnsatisfiedDependencyException: Lỗi tạo đậu với tên 'someBean' định nghĩa trong tài nguyên đường dẫn lớp [mùa xuân. xml]: Phụ thuộc không thỏa mãn được thể hiện qua đối số hàm tạo với chỉ mục 0 của kiểu [long]: Kiểu đối số hàm tạo không rõ ràng - bạn có chỉ định tham chiếu bean chính xác làm đối số hàm tạo không?

spring.xml của tôi:

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

Vì vậy, có gì sai không? Các constructor-arg có chỉ số 1 (và không phải là 0, như một ngoại lệ nói)

+1

Bạn đã thử với 'type =" java.lang.Long "'? – LaurentG

+0

Vâng, tôi cũng đã thử. Tôi đã xóa chỉ mục. Nhưng không có cải tiến nào – smsnheck

+1

bạn cũng nên chia sẻ cách hàm tạo của bạn thực sự trông giống như – KNU

Trả lời

10

Trong các đối số nhà xây dựng bạn có thể sử dụng một loại nguyên thủy long và giá trị so 0, hoặc một loại wrapper java.lang.Long và một giá trị rỗng. Ngoài ra, để giữ cho mọi thứ được kiểm soát, tôi sẽ đặt giá trị của đối số thứ hai một cách rõ ràng là 0.

+0

Ok, tôi đã chuyển từ value = "" sang value = "0". Nhưng vấn đề vẫn tồn tại – smsnheck

+1

Bạn có thể thêm mã của hàm tạo 'someClass' vào bài đăng của mình không? Bạn có chắc chắn rằng bạn vượt qua các đối số theo đúng thứ tự không? – Mikhail

+3

Vâng, thats khá lúng túng .. Các nhà xây dựng là như (id, tên) và tôi gọi là (tên, id). – smsnheck

Các vấn đề liên quan