Ошибка при создании Bean с типом java.io.file [Двухвольный конструктор типы аргументов
Вопрос
У меня есть следующая конфигурация пружинной бобов
<bean id="fileBean" class="java.io.File">
<constructor-arg type="java.lang.String"
value="$prop{file.path.property}" />
</bean>
Я получаю следующую ошибку
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'fileBean' defined in class path resource [context.xml]:
Unsatisfied dependency expressed through constructor argument with index 0 of type
[java.net.URI]: Ambiguous constructor argument types - did you specify the correct
bean references as constructor arguments?
Существует только один конструктор для java.io.file с одним параметром строки, поэтому я не уверен, почему это неоднозначно. Любая помощь оценена.
Решение
Найденный эта ссылка Это объясняет, что происходит. Оказывается, что Spring будет соответствовать аргументам по типу, если не указан индекс аргументов. Анкет В этом случае весна берет мой единый аргумент и передает его конструктору java.io.file, который принимает ДВА строки Это может быть исправлено путем указания индекса конструктора-ARG.
<bean id="fileBean" class="java.io.File">
<constructor-arg index="0"
type="java.lang.String"
value="$prop{file.path.property}" />
</bean>
Другие советы
Только мои два цента здесь: сегодня у меня была такая же проблема. У меня есть модульный тест, чтобы проверить, может ли пружина прочитать мою конфигурацию XML и генерировать все необходимые бобы. Это не удалось, потому что я редактировал неправильный XML -файл. Я редактировал «Dist» версию от Ant Build, вместо правильной версии от управления источником.
Изуческий урок: прочитайте эти весенние сообщения об исключении (с путями файлов XML) очень близко!