2008-10-17 2 views
21

Есть ли Java-эквивалент .NET App.Config?Java эквивалент app.config?

Если нет стандартного способа сохранить настройки приложения, чтобы их можно было изменить после того, как приложение было распространено?

ответ

16

Для WebApps web.xml можно использовать для хранения настроек приложения.

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

Вы также можете ознакомиться с классом Preferences, который используется для чтения и записи системных и пользовательских настроек. Это абстрактный класс, но вы можете получить соответствующие объекты, используя userNodeForPackage(ClassName.class) и systemNodeForPackage(ClassName.class).

+0

Можете ли вы дать дополнительную информацию по первому варианту: «web.xml можно использовать для хранения настроек приложения»? Вы предлагаете сохранить настройки приложения как `context-param`s? Или что-то еще? – theyuv 2016-04-27 10:49:00

+0

Есть несколько различных типов параметров, которые вы можете поместить в web.xml, но я, вероятно, имел в виду `context-param`. Я не помню, как прошло уже 7,5 лет. – Powerlord 2016-04-28 22:43:49

2

Простой способ состоит в том, чтобы просто иметь файл свойств, например myapp.properties, со всеми вашими настройками. Это не очень продвинутый способ делать настройки, но этого достаточно, или вы можете иметь собственную настройку на основе XML, или получить их из базы данных и т. д.

9

Чтобы поставить @ предложение Powerlord в (+1) с помощью Properties класса в примере кода:

public class SomeClass { 
    public static void main(String[] args){ 
     String dbUrl = ""; 
     String dbLogin = ""; 
     String dbPassword = "";  
     if (args.length<3) { 
      //If no inputs passed in, look for a configuration file 
      URL configFile = SomeClass.class.getClass().getResource("/Configuration.cnf"); 
      try { 
       InputStream configFileStream = configFile.openStream(); 
       Properties p = new Properties(); 
       p.load(configFileStream); 
       configFileStream.close(); 

       dbUrl  = (String)p.get("dbUrl"); 
       dbLogin = (String)p.get("dbUser"); 
       dbPassword = (String)p.get("dbPassword");    
      } catch (Exception e) { //IO or NullPointer exceptions possible in block above 
       System.out.println("Useful message"); 
       System.exit(1); 
      } 
     } else { 
      //Read required inputs from "args" 
      dbUrl  = args[0]; 
      dbLogin = args[1]; 
      dbPassword = args[2];   
     } 
     //Input checking one three items here 
     //Real work here. 
    } 
} 

Затем, в корне контейнера (например, верхнюю часть файла JAR) поместить файл Configuration.cnf с следующее содержание:

#Comments describing the file 
#more comments 
dbUser=username 
dbPassword=password 
dbUrl=jdbc\:mysql\://servername/databasename 

Это не чувствовать себя совершенным (мне было бы интересно услышать улучшения), но достаточно хорошо для моих текущих потребностей.

Смежные вопросы