2010-10-12 3 views
2

Есть ли способ сделать весенний (v.3.0) синтаксис разбора в файлах, которые не являются .properties? Я знаю, что могу написать свой собственный PropertyPlaceholderConfigurer, но я искал «более чистый» способ сделать это.Сделать Spring заменить заполнители в разных типах файлов (кроме конфигураций Spring)

EDIT:

Чтобы быть более точным, то, что я на самом деле хочу сделать, это заменить метки, присутствующие в .sql файлах. Таким образом, значения заполнителей хранятся в .properties, но заполнители используются в файлах .sql.

+0

Что вы считаете «более чистым», чем PropertyPlaceholderConfigurer? – GaryF

+0

@GaryF - Я думаю, что @Drahakar ссылается на то, что PropertyPlaceholderConfigurer работает только с определениями бобов, поэтому для его использования ему необходимо встроить его SQL в файлы определения bean. –

ответ

5

А PropertyPlaceholderConfigurer bean заменит заполнители в других определениях бобов. В частности, он обновляет значения свойств bean в определениях bean-компонентов ... до того, как будут созданы бобы. Поэтому, если вы хотите использовать PropertyPlaceholderConfigurer для изменения SQL, этот SQL должен быть встроен в значения свойств bean. Этот класс не может заменить свойства в произвольных файлах.

Если вы хотите заменить заполнители в произвольных файлах, то класс PropertyPlaceholderHelper - лучшая ставка. Например, метод

String replacePlaceholders(String value, Properties properties) 

заменит заполнители в value со свойствами, взятых из properties возвращающихся переписанной строки. Вы можете легко адаптировать/обернуть это, чтобы заменить заполнители в файле.

2

PropertyPlaceholderConfigurer может поставляться с произвольным объективом Properties (через свойство properties).

+0

+1, а затем вы можете использовать, скажем, commons-configuration для загрузки любого формата, который вы хотите. – Bozho

+0

+1 - Я (ab-) использовал PPC в течение нескольких месяцев, и я не заметил этой возможности. –

0

Я не знаю, используете ли вы maven, но если вы это сделаете, я бы использовал resource filtering для ввода свойств в sql-файлы во время развертывания (существуют аналогичные решения для муравья, а также), и пусть Spring's PropertyPlaceholderConfigurer использует те же файлы свойств во время выполнения. Таким образом, все там, где оно принадлежит (в конце концов, лучшим местом для свойств является файл .properties).

+0

Это не время развертывания. Это время сборки WAR-файла. –

+0

true. Я предполагаю, что я имел в виду развертывание в смысле выполнения 'mvn deploy' –

 Смежные вопросы

  • Нет связанных вопросов^_^