Смущен расположением файла свойств Java

Я нашел эту конкретную заметку в сеансе 9.1.9 Аннотацию GeneratedValue из спецификации JPA: «[43] Портативные приложения не должны использовать аннотацию GeneratedValue для других постоянных полей или свойств». Поэтому я предполагаю, что невозможно автоматически генерировать значение для значений не первичного ключа, по крайней мере, используя просто JPA.

24
задан user613114 5 February 2012 в 16:50
поделиться

4 ответа

Типичный способ справиться с этим - загрузить базовые свойства из встроенного файла и позволить пользователям приложения указать дополнительный файл с переопределениями. Какой-то псевдокод:

Properties p = new Properties();
InputStream in = this.getClass().getResourceAsStream("c.properties");
p.load(in);

String externalFileName = System.getProperty("app.properties");
InputStream fin = new FileInputStream(new File(externalFileName));
p.load(fin);

Ваша программа будет вызываться примерно так:

java -jar app.jar -Dapp.properties="/path/to/custom/app.properties"
27
ответ дан Perception 5 February 2012 в 16:50
поделиться

Сначала сохраните свойства по умолчанию в вашем файле свойств, который упакован в банку. Когда приложение запускается, попробуйте прочитать файл свойств с тем же именем из некоторого местоположения по умолчанию в файловой системе, предпочтительнее домашняя папка пользователя, которую вы можете получить с помощью System.getProperty("user.home");. Если файл существует в файловой системе, загрузите его, если он не существует, загрузите упакованный файл свойств и запишите копию в файловую систему.

Таким образом, если имя вашего файла свойств - myprops.properties, изначально его будет содержать только ваш jar-файл. Когда приложение запускается, оно проверит, существует ли файл /home/xyz/myprops.properties. Поскольку это не так, он будет читать файл упакованных свойств и записывать копию в файл /home/xyz/myprops.properties. Со следующего раза он будет читать из /home/xyz/myprops.properties.

3
ответ дан Sampada 5 February 2012 в 16:50
поделиться

Почему бы не передать местоположение файла свойств в качестве аргумента командной строки (после флага)? если его нет, используйте файл по умолчанию в jar-файле.

2
ответ дан msgmash.com 5 February 2012 в 16:50
поделиться

Вы загружаете файл свойств из пути к классам. Я бы предложил что-то вроде этого:

Свойства location

-1
ответ дан Community 5 February 2012 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: