Аргументы пользовательского ввода для передачи в контекст приложения Spring
У меня есть приложение Java, которое принимает пользовательский ввод для пути к файлу конфигурации. Я хочу, чтобы этот путь входного файла конфигурации был передан в мой весенний applicationContext.xml, чтобы я мог создать bean-компонент источника данных с dburl, dbusername и dbpasswd, который будет быть использованы в дальнейших классах моего приложения.
Есть ли способ передать пользовательские параметры времени выполнения в контекст приложения Spring? Если да, то как найти его в applicationContext.xml
2 ответа
Создайте класс, содержащий ваши данные времени выполнения, объявите его как Bean в applicationContext.xml, а затем в свойствах вашего источника данных предоставьте ссылку на этот класс.
У вас есть три основных способа сделать контекст приложения осведомленным о конфигурации во время выполнения:
- использовать файл свойств и
PropertyPlaceholderConfigurer
- это будет работать нормально, но вы должны использовать файл на диске для передачи данных, которые уже находятся в памяти - использовать системные свойства, потому что
PropertyPlaceholderConfigurer
можете использовать их как запасной вариант (или предпочтительно) для файла свойств - не использовать диск, но вы часто выбираете имя своих свойств правильно, чтобы избежать побочных эффектов (обычно префиксы должны быть в вашем собственном пространстве имен) - использовать статические поля в выделенном классе или даже в bean-компоненте - не обязательно очень хорошо, но это просто работает
Конечно, какой бы метод вы ни выбрали, обязательно инициализируйте эти данные перед обновлением и запуском контекста приложения.