Мне нужен контекст приложения Spring, чтобы включить компонент, который является (Java 7) Path
объектом с фиксированным (известным) именем пути. Какое определение XML-компонента нужно использовать?Как создать бит пути
Этот вид фасоли имеет некоторые осложнения:
Path
представляет собой интерфейс, иPath
объекты должны быть созданы с использованием статического фабричного методаPaths.get(String...)
.- Статический заводский метод также имеет перегруженный вариант,
Paths.get(URI)
.
В качестве объекта есть-Path
, то class
боба должен быть Path
:
<bean name="myPath" class="java.nio.file.Path"/>
Мне нужно, чтобы указать статический фабричный метод для использования, которые, казалось бы, требует factory-method
атрибут. Но фабричный метод относится к классу java.nio.file.Paths
, а не java.nio.file.Path
класса, поэтому я предполагаю следующий не будет работать:
<bean name="myPath" class="java.nio.file.Path"
factory-method="java.nio.file.Paths.get"/>
Наконец, мне нужно дать аргументы для фабричного метода. Как мне это сделать? Использование вложенных элементов constructor-arg
(sic)? Итак, что-то вроде этого?
<bean name="myPath" class="java.nio.file.Path"
factory-method="java.nio.file.Paths.get">
<constructor-arg value="/my/path/name"/>
</bean>
Но это не работает: Пружины бросает BeanCreationException
, жалуясь «Ни один метод сопоставления завод не найдено: фабричный метод„java.nio.file.Paths.get()“.»
Nope: 'org.springframework.beans.factory.BeanCreationException: Ошибка создания bean с именем 'myPath', определенным в ресурсе пути к ключу [spring.xml]: Не найдено соответствующего метода фабрики: factory bean 'pathFactory'; factory method 'get()' '. – Raedwald
@ Raedwald отредактировал –