2009-06-08 26 views
10

Mi piacerebbe sapere qual è il modo più efficiente di gestire le proprietà in Scala. Sono stanco di avere file di proprietà gazillion, file xml e altri tipi di file di configurazione in Java e mi chiedo se c'è "best practice" per gestire quelli in qualche modo più efficienti in Scala?Gestione delle proprietà in Scala

risposta

2

EDIT: Typesafe config ti dà una soluzione semplice e potente per la configurazione - https://github.com/typesafehub/config

ORIGINALE (forse non molto utile):

Citando "Programming in Scala":

"In Scala , puoi configurare tramite il codice Scala stesso. "

Il collegamento runtime di Scala consente di scambiare le classi in fase di runtime e la filosofia generale di questi linguaggi tende a favorire la convenzione rispetto alla configurazione. Se non vuoi gestire i file di proprietà gazillion, non li hai.

+0

Non vedo come questo risponda alla domanda. Potresti espandere? "Scambiare in fase di runtime" sembra implicare la configurazione rispondendo dinamicamente all'ambiente di runtime. Ma molti parametri di configurazione sono sconosciuti al runtime, come le password di DB o che l'amministratore riceve email di errore. Potremmo parlare di meccanismi di scoperta dei servizi, ma questo è eccessivo per i piccoli progetti e avranno i loro parametri di configurazione, dando il via alla domanda in discesa. A un certo punto, è necessario fornire input al programma. Se lo organizzi in coppie chiave/valore, hai i file delle proprietà ... – DrGary

+0

Per le impostazioni specifiche dell'ambiente (che dovrebbero essere le uniche esternalizzate) puoi ottenere le proprietà di sistema come in Java, come ad esempio: val databaseName = System.getProperty ("myapp.db.name"). Quindi li si configura nello script di avvio e li si dà al runtime in questo modo: java -Dmyapp.db.name = DeeBee MainClass. Per quanto riguarda le password, probabilmente non dovresti avere quelle nei file, però, potrebbe essere che tu possa avere la tua app che ti chiede quando si avvia. – George

+0

Puoi fare un esempio. Sembra molto utile. – Jus12

4

Perché dovresti avere un file di proprietà gazillion?

Sto ancora utilizzando i comuni Apache Digester, che funziona perfettamente bene in Scala. È fondamentalmente un modo molto semplice per creare una mappa di documenti XML definita dall'utente per le chiamate di metodo su una classe configuratore definita dall'utente. Trovo estremamente utile quando voglio analizzare alcuni dati di configurazione (al contrario delle proprietà dell'applicazione).

Per le proprietà dell'applicazione, è possibile utilizzare un framework di integrazione delle dipendenze (come Spring) o semplicemente vecchi file di proprietà. Sarei anche interessato a vedere se Scala offre qualcosa su questo, però.

2

Check out Configgy che sembra una piccola biblioteca ordinata. Include annidamento e notifica delle modifiche. Include anche una libreria di registrazione.

Sfortunatamente, non è stato compilato per me sulle istanze Mac che ho provato. Facci sapere se hai più fortuna e cosa ne pensi ...

Aggiornamento: risolto i problemi di compilazione di Mac. Vedi questo post.