Ошибка при создании Bean с типом java.io.file [Двухвольный конструктор типы аргументов

StackOverflow https://stackoverflow.com/questions/7327255

  •  27-10-2019
  •  | 
  •  

Вопрос

У меня есть следующая конфигурация пружинной бобов

  <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) очень близко!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top