Главная » Spring » Внешние файлы с настройками свойств Spring

0

Практически всегда все настройки приложения можно сосредо- точить в одном XML-файле. Но иногда может оказаться полезным перенести некоторую их часть в отдельный файл. Например, для многих приложений общей частью конфигурации является конфи- гурация источника данных. В Spring источник данных можно на- строить, как показано ниже:

<bean  id="dataSource"  class= "org.springframework.jdbc.datasource.DriverManagerDataSource">

<property  name="url" value="jdbc:hsqldb:Training"  />

<property   name="driverClassName" value="org.hsqldb.jdbcDriver"  />

<property name="username" value="appUser" />

<property name="password" value="password" />

</bean>

Включение настроек источника данных в общий файл с описа- нием компонентов может оказаться нецелесообразным. Параметры подключения к базе данных определяются на этапе развертывания

приложения. Тогда как файл с описанием компонентов определя- ет порядок их связывания внутри приложения. Это не означает, что нельзя настроить все компоненты приложения в одном файле. В самом деле, когда конфигурация отражает специфику конкретного приложения (а не специфику его развертывания), настройки ком- понентов предпочтительнее хранить в ее отдельном файле, чтобы отделить их от настроек, определяемых на этапе развертывания.

К счастью, вынести определение свойств в отдельный файл до- статочно легко, если в качестве контейнера Spring использовать ApplicationContext. Чтобы сообщить фреймворку Spring о необходи- мости загружать конфигурацию из внешнего файла свойств, мож- но воспользоваться классом PropertyPlaceholderConfigurer. Для этого необходимо настроить следующий компонент в файле связывания компонентов:

<bean  id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property  name="location"  value="jdbc.properties"  />

</bean>

Свойство location позволяет работать с одним файлом свойств. Если потребуется разбить конфигурацию свойств на несколько фай- лов, следует использовать свойство locations класса PropertyPlace- holderConfigurer и указать в нем список файлов со свойствами:

<bean  id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property  name="locations">

<list>

<value>jdbc.properties</value>

<value>security.properties</value>

<value>application.properties</value>

</list>

</property>

</bean>

Теперь можно заменить жестко определенные значения в файле с описанием компонентов соответствующими переменными. Синтак- сически переменные записываются в форме ${variable}, аналогично тому, как описываются свойства в языке утилиты Ant и в языке выражений JSP. После подстановки переменных новое определение компонента dataSource будет выглядеть так:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="url" value="${database.url}" />

<property   name="driverClassName" value="${database.driver}"  />

<property  name="username" value="${database.user}" />

<property  name="password" value="${database.password}"  />

</bean>

Когда фреймворк Spring создаст компонент источника данных dataSource, в работу включится объект PropertyPlaceholderConfigurer и заменит переменные их значениями из файла со свойствами, как показано на рис. 3.7.

Рис. 3.7. PropertyPlaceholderConfigurer позволяет выносить значения параметров настройки в отдельный файл со свойствами и затем загружать их для подстановки на место переменных

в описании контекста Spring

Класс PropertyPlaceholderConfigurer удобно использовать для выде- ления части настроек в отдельный файл свойств. Но Java использует файлы свойств не только для конфигурации, они также часто ис- пользуются для хранения текстовых сообщений и интернационали- зации. Посмотрим, как можно организовать извлечение текстовых сообщений из файлов свойств.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии