Come posso utilizzare ResourceBundle per evitare percorsi di configurazione hardcoded nelle app Java?
-
03-07-2019 - |
Domanda
Vorrei eliminare le dipendenze dai percorsi hardcoded per i dati di configurazione nelle mie app Java, capisco che l'uso di ResourceBundle mi aiuterà a utilizzare il classloader per trovare risorse.
Qualcuno può dirmi come vorrei sostituire un percorso hardcoded a una risorsa (diciamo un file di dati di configurazione .properties richiesto da una classe) con un uso appropriato di ResourceBundle? Semplicemente chiaro esempio se possibile, grazie a tutti.
Soluzione
Prima di Java 6, ResourceBundle in genere consentiva:
- Stringhe da un gruppo di file di proprietà localizzati, utilizzando PropertyResourceBundle
- Oggetti da un gruppo di classi localizzate, usando ListResourceBundle
Java 6 viene fornito con ResourceBundle. Controlla la classe che apre le porte ad altre fonti di ResourceBundles, ad esempio:
- File XML (vedi esempio 2 in Javadoc)
- Righe database
Spero che questo aiuti.
Altri suggerimenti
Dovrai esaminare Resource.getBundle (String) . Si passa il nome completo di una risorsa sul percorso di classe da caricare come file delle proprietà.
Non è necessario un ResourceBundle. Un semplice oggetto Proprietà può fare il lavoro. Basta usare il classloader per ottenere un inputstream per il file delle proprietà e usarlo per caricare i valori. Se è necessario gestire configurazioni utente più sofisticate, utilizzare preferenze api .
Cordiali saluti
Il trucco dietro Resource.getBundle (..) è l'uso del classloader. Puoi caricare tutto ciò che è nel tuo percorso di classe accedendo tramite this.getClass (). GetClassLoader (). Resource.getBundle (..) è un aiuto pratico per usarlo nell'argomento risorsa / localizzazione.