Ответ 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>
Надеюсь, что это поможет.