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
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.
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ò.
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.
- 1. Come funziona la gestione della memoria delle chiusure in Scala?
- 2. Leggi il file delle proprietà in classpath usando scala
- 3. come leggere il file delle proprietà in scala
- 4. Gestione delle opzioni nel modello di riproduzione Scala
- 5. Gestione delle dipendenze delle formiche
- 6. BackgroundWorker gestione delle eccezioni
- 7. Gestione delle eccezioni in ThreadPools
- 8. Gestione delle eccezioni in linux
- 9. Gestione delle sessioni in Node.js?
- 10. Gestione proprietà di Google Guice
- 11. Gestione delle dipendenze delle promesse
- 12. gestione delle mie immagini in Java
- 13. Gestione Spring-mvc e gestione delle eccezioni
- 14. Python Gestione delle eccezioni
- 15. Gestione delle dipendenze JavaScript
- 16. DDD, gestione delle dipendenze
- 17. AngularJS: Gestione delle dipendenze
- 18. Gestione delle eccezioni MVVM
- 19. gestione delle eccezioni python
- 20. Gestione delle eccezioni crittografiche
- 21. Gestione delle eccezioni NHibernate
- 22. Gestione delle eccezioni PostgreSQL
- 23. Gestione delle eccezioni WCF
- 24. C++ gestione delle eccezioni
- 25. Utilizzo delle immagini in Scala
- 26. Gestione delle dipendenze con applicazioni Play 2.0
- 27. Gestione degli errori Scala: Future For Comprensione
- 28. Gestione delle eccezioni CPU in C++
- 29. C#: gestione delle eccezioni in chiamata ricorsiva
- 30. Gestione asincrona delle eccezioni in Python
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
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
Puoi fare un esempio. Sembra molto utile. – Jus12