Контейнер Spring.NET и переменные среды (environment variable) - CodeHelper

Контейнер Spring.NET и переменные среды (environment variable)

3

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

Новые ответы


3

В конфигуровочных файлах Spring.NET можно использовать плейсхолдеры, которые во время инициализации будут заменены значениями из конфигуровочного файла. Например, в App.config/Web.config указанно:

<appSettings>
  <add key="SomeProperty" value="10"/>
</appSettings>

Далее, в Objects.xml нужно создать объект, который будет заменять плейсхолдеры реальными значениями:

<object name="appConfigPropertyHolder" type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
    <property name="IgnoreUnresolvablePlaceholders" value="true" />
    <property name="configSections">
        <value>appSettings</value>
    </property>
</object>

Теперь в любом месте XML конфигурации можно использовать placeholder ${SomeProperty}. Более того, у объекта PropertyPlaceholderConfigurer есть свойство EnvironmentVariableMode, с помощью которого можно указать, какие действия предпринимать если есть переменная среды с именем аналогичным плейсхолдеру. Возможные значения:

  • Fallback — значения из .config файла перекрывают значения переменных среды;
  • Never — переменные среды игнорируются;
  • Override - переменные среды перекрывают значения из .config-файла.

Итак, для замены всех свойств переменными среды нужно приведенный выше код заменить на следующий:

<object name="appConfigPropertyHolder" type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
  <property name="IgnoreUnresolvablePlaceholders" value="true" />
  <property name="EnvironmentVariableMode" value="Override" />
  <property name="configSections">
    <value>appSettings</value>
  </property>
</object>

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.