Spring IoC контейнер: точки расширения контейнера, PropertyOverrideConfigurer

PropertyOverrideConfigurer, другой постпроцессор фабрики бинов, напоминает PropertySourcesPlaceholderConfigurer, но в отличие от последнего, исходные определения могут иметь значения по умолчанию или вообще не иметь значений для свойств бина. Если в файле переопределенных свойств нет записи для определенного свойства компонента, используется определение контекста по умолчанию.

Обратите внимание, что определение компонента не знает о переопределении, поэтому из файла определения XML не сразу видно, что используется конфигуратор переопределения. В случае нескольких экземпляров PropertyOverrideConfigurer, которые определяют разные значения для одного и того же свойства компонента, выигрывает последний из-за механизма переопределения.

Строки конфигурации файла свойств имеют следующий формат:

beanName.property=value

Следующий листинг показывает пример формата:

dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql:mydb

Этот файл примера можно использовать с определением контейнера, содержащим компонент, называемый dataSource, который имеет свойства драйвера и URL-адреса.

Имена составных свойств также поддерживаются, если каждый компонент пути, кроме последнего переопределяемого свойства, уже не равен нулю (предположительно, инициализируется конструкторами). В следующем примере свойству sammy свойства bob свойства fred свойства bean-компонента Tom присваивается скалярное значение 123:

tom.fred.bob.sammy=123

Указанные значения переопределения всегда являются литеральными значениями. Они не переводятся в ссылки на бин. Это соглашение также применяется, когда исходное значение в определении компонента XML указывает ссылку на компонент.

С помощью пространства имен контекста, представленного в Spring 2.5, можно настроить переопределение свойств с помощью выделенного элемента конфигурации, как показано в следующем примере:

<context:property-override location="classpath:override.properties"/>


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки