06. november 2004 - 20:11
Der er
20 kommentarer og 1 løsning
Konfigurations objekt fra en fil
Er igang med at lave en mindre klient som skal koble op imod en server. Og istedet for at hardcode settings ind i klienten kunne det nok være meget smart at lave en lidt mere dynamisk løsning. Det jeg tænkte på var at have en konfigurations fil som man så læser ind i et singleton userconfig objekt, så man hele tiden har let adgang til den. (Er det forresten en smart løsning eller bør man lave det på en anden måde?) Men hvad skal så vælge? en alm. tekst fil eller bruge xml? eks. på ting jeg gerne ville have læst ind i et userconfig objekt: userid, serverip, serverport, email etc. (der kunne være flere ting) Nogen der evt. kunne fixe et eksempel på en løsning?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
06. november 2004 - 20:14
#1
Der er en klasse java.util.Properties som er der til den slags. Den læser filer med: key = value key = value key = value
06. november 2004 - 20:15
#2
Til lidt mere avancerede ting er XML godt fordi man kan have mere struktur i en XML fil. Men det kræver også lidt mere kode. Jeg har skrevet en artikel om at læse XML filer fra Java.
06. november 2004 - 20:16
#3
Burde nok lige nævnes at jeg ikke tidligere har arbejdet med XML.
06. november 2004 - 20:16
#4
En helt tredie mulighed var java.util.prefs pakken (forudsat at du er på Java 1.4 eller nyere).
06. november 2004 - 20:16
#5
Mit råd vil være at starte med properties. Det er super nemt.
06. november 2004 - 20:17
#6
p.props: k1 = val1 k2 = val2 Properties p = new Properties(); p.load(new FilInputStream("p.props")); og p.getProperty(k1) vil returnere val1
06. november 2004 - 20:18
#7
Den kan også nemt pakkes ind i en singleton
06. november 2004 - 20:18
#8
Hvis det nu var en xml løsning, kunne du så prøve at lave et kode eksempel? Og evt. et mindre XML dokument som eks. repræsenterede de ting jeg nævnte: userid, serverip, serverport, email
06. november 2004 - 20:18
#9
damn du svarere hurtigt :)
06. november 2004 - 20:20
#10
Kunne jeg så istedet for få dig til at lave et properties eksempel?
06. november 2004 - 20:25
#11
Sagtens. Som config singleton ?
06. november 2004 - 20:26
#12
Det ville være lækkert hvis det kunne laves som en singleton.
06. november 2004 - 20:29
#13
5 minutter
06. november 2004 - 20:33
#14
import java.util.*; import java.io.*; public class Config { private Properties props; private static Config instance = null; private Config() { props = new Properties(); try { props.load(new FileInputStream("C:\\Config.properties")); } catch (FileNotFoundException e) { } catch (IOException e) { } } public static Config getInstance() { if (instance == null) { synchronized (Config.class) { if (instance == null) { instance = new Config(); } } } return instance; } public int getN() { return Integer.parseInt(props.getProperty("N")); } public String getS() { return props.getProperty("S"); } public static void main(String[] args) { System.out.println(Config.getInstance().getN()); System.out.println(Config.getInstance().getS()); } }
06. november 2004 - 20:33
#15
Config.properties: N = 123 S = ABC
06. november 2004 - 20:33
#16
og et svar
06. november 2004 - 20:40
#17
Takker, var en del mere simpelt end jeg lige havde forestillet mig. Jeg vil prøve at arbejde lidt videre med det :) Hvis jeg får lidt mere blod på tanden må jeg jo kigge på den XML artikel du har lavet.
06. november 2004 - 20:54
#18
Hvorfor har du egentlig lavet en synchronized blok? synchronized (Config.class) En normal singleton: public static Config getInstance() { if(instance == null) { instance = new Config(); } return instance; }
06. november 2004 - 21:04
#19
1) Den skal være synchronized hvis nu den skal bruges i en en multithreaded applikation. 2) Jeg snuppede den version som ikke virker. :-( Det skulle være: public synchronized static Config getInstance() { if (instance == null) { instance = new Config(); } return instance; }
07. november 2004 - 20:21
#20
Kom lige til at tænke på en ting, hvad nu hvis jeg også gerne vil kunne lave ændringer til configen?
07. november 2004 - 20:24
#21
midlertidigt: bare lav set metoder permanent: lav set metoder lad de set metoder kalde Properties store
Kurser inden for grundlæggende programmering