У меня есть некоторые устаревшие банки. Я пытаюсь работать внутри весеннего контекста.Найти абсолютный путь к файлу * .properties в контексте Spring
Внутри моей applicationContext.xml, я загружаю файл свойств (ы) с помощью:
<context:property-placeholder location="classpath*:META-INF/spring/*.properties" />
... и она отлично работает в то время как в контексте пружины.
В устаревшем коде мне нужно получить абсолютный путь к этому конфигурационному файлу, и он должен работать, когда я запускаю mvn tomcat:run
, и когда он упакован в военный файл и развернут в контейнер Tomcat (в случае, re, интересно, да, весна, а старый код имеет один и тот же файл конфигурации application.properties).
@Service
public class Startup {
Logger log = LoggerFactory.getLogger(Startup.class);
@PostConstruct
public void startup() throws Exception {
if (!LegacyCode.isInit()){
// this works using a hardcoded path
LegacyCode.init("/home/user/absolute/path/to/application.properties");
// this doesn't work, but would the preferred solution if it did
// LegacyCode.init("classpath*:META-INF/spring/*.properties");
}
}
}
Я рассматривал возможность использования:
String config[] = { "classpath*:META-INF/spring/applicationContext.xml" };
ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
, а затем захватить путь, используя ctx.getResource, но кроме того, что это очень неэффективно для загрузки ApplicationContext второй раз только, чтобы получить приложение .properties ', это также вызовет бесконечный цикл работы @PostConstruct.
Унаследованный код использует конфигурацию Commons (насколько я могу видеть и на основе ошибок зависимостей) для настройки своей конфигурации, то, что я ищу, - это способ настройки Commons Configuration для загрузки правильного файла application.properties, независимо от того, работает на Linux, Windows, из файла WAR или из встроенного Tomcat и т.д.
У вас есть несколько файлов свойств в вашем Spring xml, но вы LegacyCode принимают только один? – yunandtidus
Правильно, конфигурация, которая мне нужна для устаревшего материала, сегментирована, поэтому для jar1 мне нужна конкретная конфигурация, а для jar2 мне нужна другая конфигурация, как для настройки Commons Configuration, так и для Spring, ваш ответ выглядит так, как будто бы это сделало работу , проверит немного и вернет вам ответ. –