Сделайте Spring заменить заполнители в разных типах файла (кроме конфигураций Spring)
-
29-09-2019 - |
Вопрос
Есть ли способ сделать 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).