Spring — динамическая загрузка конфигурационного файла

#spring

#spring

Вопрос:

Я пишу приложение spring, в котором common-config.xml каждый раз должен загружаться один файл конфигурации, а другой файл конфигурации (файл конфигурации для конкретного продукта) должен загружаться динамически, поскольку для загрузки этого файла конфигурации я должен сначала получить название продукта, а затем сформировать имя файла конфигурации.

например

 ApplicationContext ctx = getApplicationContext(); // returns app ctx initialized at the application startup time

String productName = getProductName();
String version = getProductVersion();
String configFileName = productName   "-"   version   ".xml";

// load the above config file
  

Возможно ли это весной?

Комментарии:

1. Что именно вы подразумеваете под «каждый раз» и «загружается динамически»?

2. @Ralph «каждый раз» -> common-config.xml файл должен загружаться каждый раз, когда я загружаю его во время запуска приложения. «загружается динамически» означает, что второй файл конфигурации должен быть загружен путем первого создания имени файла конфигурации на основе названия продукта, для которого запущено это приложение.

3. Может ли контекст приложения, определенный в common-config.xml быть загруженным без «динамического»? (Содержит ли он все необходимые компоненты?)

Ответ №1:

Я не уверен, что ваш пример кода идет в правильном направлении, когда дело доходит до решения вашей проблемы. Вы могли бы, например, вычислить второе имя файла перед созданием какого-либо контекста вообще, а затем передать его созданному контексту.

Другой вариант — иметь два контекста: первый, построенный из common-config.xml и второй с вашим динамически сгенерированным именем файла. Второй контекст будет использовать первый в качестве родительского, поэтому он в основном будет иметь доступ ко всем своим компонентам и настройкам. Также второй контекст может быть перезагружен независимо от первого.