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"/>
Читайте также:
- Spring IoC контейнер: точки расширения контейнера, подстановка имени класса PropertySourcesPlaceholderConfigurer
- Spring IoC контейнер: точки расширения контейнера, пример использования BeanPostProcessor
- Spring IoC контейнер: точки расширения контейнера, BeanFactoryPostProcessor
Комментарии
Отправить комментарий