Сделайте Spring заменить заполнители в разных типах файла (кроме конфигураций Spring)

StackOverflow https://stackoverflow.com/questions/3914971

Вопрос

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

РЕДАКТИРОВАТЬ:

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

Это было полезно?

Решение

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

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

String replacePlaceholders(String value, Properties properties)

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

Другие советы

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

Я не знаю, используете ли вы Maven, но если вы это сделаете, я бы использовал Фильтрация ресурсов Чтобы ввести свойства в файлы SQL во время развертывания (также есть аналогичные решения для муравья) и пусть пружина PropertyPlaceholderConfigurer Используйте те же файлы свойств во время выполнения. Таким образом, все это, где он принадлежит (в конце концов, лучшее место для свойств - это файл .properties).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top