Возможные способы абстрагирования жестко запрограммированных имен путей для файла свойств в приложении Java - PullRequest
0 голосов
/ 27 октября 2009

Я пытаюсь привязать стороннее приложение к нашему проекту, но обнаружил, что пути unix их файлов свойств были жестко закодированы в несколько классов.Возможно, возможно внести минимальные изменения в их настройки, поэтому мой вопрос: каковы возможные (и самые быстрые) способы достижения этого?Стороннее приложение не использует ни ant, ни spring, а просто скрипт сборки, который компилирует код в файл .jar, вызываемый из командной строки.

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Вы можете прочитать файлы свойств как ресурсы. Тогда вам нужно только поместить каталоги, содержащие эти файлы, в ваш путь к классам.

1 голос
/ 27 октября 2009

Вы на самом деле не сказали, чего хотите достичь. Будет ли ваше приложение определять некоторые пути и передавать их стороннему приложению через API? Будет ли что-то в вашей среде (например, аргумент командной строки) указывать расположение файлов?

Сначала я бы реорганизовал их код, чтобы точно знать, что любые жестко закодированные строки хранятся в одном определенном месте. Так что если, например, у них есть

readProperties("/usr/thing/propertyFileXxx.txt");

или

static final String  PROPERTY_XXX = "/usr/thing/propertyFileXxx.txt";
readProperties(PROPERTY_XXX);

Я бы сначала объединил в один метод доступа для свойств

readProperties(PROPERTY_XXX_ENUM);

Так что теперь у нас есть четко определенный фрагмент кода, который определяет, где получить свойства каждого типа, и конкретный список типов свойств.

Тогда нам нужен какой-то управляемый способ определить набор файлов свойств, которые будут использоваться во время выполнения. Я использовал предложенную @tangens идею о загрузке свойств в виде ресурсов из определенного каталога, добавленного в путь к классам.

...