Подтвердить что ты не робот

Лучшие способы обработки значений свойств в XML файле в Spring, Maven и Eclipses

Я работаю над проектом Spring WebFlow, который имеет множество значений свойств в файлах XML, как знает любой программист Spring. У меня есть имена пользователей базы данных, пароль, URL-адреса и т.д.

Мы используем Eclipse с Spring WebFlow и Maven. Мы пытаемся создать SA, но SA не хочет входить в файлы XML для изменения значений, но, с другой стороны, мы не знаем производственных значений. Как мы работаем с этим?

4b9b3361

Ответ 1

Большинство SA более охотно и уверенно относятся к файлу .properties, а не к .xml.

Spring предоставить PropertyPlaceholderConfigurer, чтобы вы могли определить все в один или несколько файлов .properties и заменить местозаполнитель в applicationContext.xml.

Создайте app.properties в папке src/main/resources/:

... ...

# Dadabase connection settings:
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/app_db
jdbc.username=app_admin
jdbc.password=password

... ...

И используйте PropertyPlaceholderConfigurer в applicationContext.xml так:

... ...

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>app.properties</value>
  </property>
</bean>

... ...

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
</bean>

Обратитесь Spring Пример PropertyPlaceholderConfigurer для более подробной информации.

Кроме того, с точки зрения развертывания приложений мы обычно добавляем приложение в некоторый исполняемый формат, а файлы .properties обычно упаковываются внутри исполняемого файла войны или уха. Простое решение состоит в том, чтобы настроить PropertyPlaceholderConfigurer bean для разрешения свойств из нескольких местоположений в заранее определенном порядке, поэтому в среде развертывания вы можете использовать переменную фиксированного местоположения или среды для указания файла свойств, также обратите внимание, что в порядке для упрощения задачи развертывания/настройки для SA мы обычно используем один внешний файл .properties, который определяет всю конфигурацию во время выполнения, например:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <!-- Default location inside war file -->
      <value>classpath:app.properties</value>
      <!-- Environment specific location, a fixed path on server -->
      <value>file:///opt/my-app/conf/app.properties</value>
    </list>
  </property>
  <property name="ignoreResourceNotFound" value="true"/>
</bean>

Надеюсь, что это поможет.