Java equivalente a app.config?
-
03-07-2019 - |
Domanda
Esiste un equivalente Java a App.Config di .NET?
In caso contrario, esiste un modo standard per mantenere le impostazioni dell'applicazione, in modo che possano essere modificate dopo la distribuzione di un'app?
Soluzione
Per WebApps, web.xml può essere utilizzato per memorizzare le impostazioni dell'applicazione.
Oltre a ciò, puoi utilizzare le Proprietà class per leggere e scrivere file di proprietà.
Puoi anche consultare Preferenze , utilizzata per leggere e scrivere le preferenze del sistema e dell'utente. È una classe astratta, ma puoi ottenere oggetti appropriati usando userNodeForPackage (ClassName.class)
e systemNodeForPackage (ClassName.class)
.
Altri suggerimenti
Per mettere il suggerimento di @ Powerlord (+1) sull'uso della classe Properties
nel codice di esempio:
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.
}
}
Quindi, nella radice del contenitore (ad esempio nella parte superiore di un file jar) posizionare un file Configuration.cnf
con il seguente contenuto:
#Comments describing the file
#more comments
dbUser=username
dbPassword=password
dbUrl=jdbc\:mysql\://servername/databasename
Non mi sembra perfetto (sarei interessato a sentire miglioramenti) ma abbastanza buono per le mie esigenze attuali.
Il modo semplice è semplicemente avere un file delle proprietà, ad esempio myapp.properties, con tutte le tue impostazioni. Non è un modo molto avanzato per fare le impostazioni ma è sufficiente, oppure puoi avere la tua configurazione basata su XML, o ottenerli da un database, ecc.