Возможно ли иметь динамический путь ресурса для импорта? - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть программа Spring.NET с файлом конфигурации. Чтобы сгладить переход от теста к продукту, я хотел бы иметь переменную среды, которая дает путь к общему файлу конфигурации, и использовать его для импорта ресурса , однако, похоже, что <import resource="path"/> не будучи решенным . Например, если я пытаюсь загрузить файл <import resource="\\server\share\${computername}\SpringConfig.xml"/>, я получаю исключение не найденный файл, как показано ниже:

System.Configuration.ConfigurationErrorsException: Ошибка при создании контекста «spring.root»: файл [\ server \ share \ $ {имя_компьютера} \ SpringConfig.xml] не может быть преобразован в локальный путь к файлу - ресурс не использует «file:» протокол. ---> Spring.Objects.Factory.ObjectDefinitionStoreException: IOException, анализирующий XML-документ из файла [\ server \ share \ $ {computername} \ SpringConfig.xml] ---> System.IO.FileNotFoundException: файл [\ server \ share \ $ {имя_компьютера} \ SpringConfig.xml] не может быть преобразовано в локальный путь к файлу - ресурс не использует протокол 'file:'.

Есть ли способ иметь динамический путь импорта в Spring.NET, желательно без написания кода?

Ответы [ 2 ]

4 голосов
/ 17 февраля 2012

Вы можете сделать это в любом случае с дополнительным кодом:

  • Создайте свой собственный FileSystemResource, который заменит заполнители в имени ресурса. Начните с переопределения существующего FileSystemResource (в пространстве имен Spring.Core.IO)

  • Зарегистрируйте вашу новую реализацию IResource в контейнере, используя собственное имя протокола (например: myfile: //). См. Здесь документацию по ссылкам для примера:

    1. В файле конфигурации .NET (app.config / web.config) http://www.springframework.net/doc-latest/reference/html/resources.html#d4e2911
    2. В конфигурационных файлах Spring http://www.springframework.net/doc-latest/reference/html/objects.html#context-custom-resourcehandler
  • Используйте это! ресурс = "MyFile: // \ сервер \ доля \ $ {имякомпьютера} \ SpringConfig.xml"

1 голос
/ 16 февраля 2012

Я не думаю, что мы можем сделать это с текущей версией. Последняя версия Java поддерживает его, поэтому мы можем ожидать эту функцию в будущей версии (по умолчанию используется переменная среда)

...