Me gustaría saber cuál es la forma más eficiente de manejar propiedades en Scala. Estoy cansado de tener millones de archivos de propiedades, archivos xml y otro tipo de archivos de configuración en Java y me pregunto si hay "mejores prácticas" para manejar aquellos que de alguna manera son más eficientes en Scala.Manejo de propiedades en Scala
Respuesta
EDIT: Typesafe config le da una solución sencilla y potente para la configuración - https://github.com/typesafehub/config
ORIGINAL (posiblemente no muy útil):
Citando "Programación en Scala":
"En Scala , puedes configurarlo a través del código Scala ".
El enlace de tiempo de ejecución de Scala permite cambiar las clases en tiempo de ejecución y la filosofía general de estos lenguajes tiende a favorecer la convención sobre la configuración. Si no desea tratar con los archivos de propiedad de gazillion, simplemente no los tiene.
¿Por qué tiene un montón de archivos de propiedad?
Todavía estoy usando Apache commons Digester, que funciona perfectamente bien en Scala. Básicamente es una forma muy fácil de hacer un mapa de documento XML definido por el usuario para llamadas a métodos en una clase de configurador definido por el usuario. Me resulta extremadamente útil cuando quiero analizar algunos datos de configuración (en lugar de las propiedades de la aplicación).
Para las propiedades de la aplicación, puede utilizar un marco de inyección de dependencias (como Spring) o simplemente archivos de propiedades antiguas. También me gustaría ver si Scala ofrece algo más que esto.
Echa un vistazo Configgy que parece una pequeña biblioteca aseada. Incluye anidación y notificación de cambio. También incluye una biblioteca de registro.
Lamentablemente, no compilé en las instancias de Mac que probé. Háganos saber si tiene mejor suerte y lo que piensa ...
Actualización: resolvió problemas de compilación de Mac. Vea esto post.
- 1. Propiedades de Scala Pregunta
- 2. Manejo de propiedades Cambiado de forma segura
- 3. continuación de Scala y manejo de excepciones
- 4. Manejo de C# Propiedades que no deberían ser nulas
- 5. Obteniendo un mapa de Scala desde las propiedades de Java
- 6. ¿Cómo manejo idiomáticamente los controles nulos desde Scala/Lift?
- 7. manejo
- 8. Scala AST en Scala
- 9. Manejo de excepciones en linux
- 10. manejo de sesión en jquery
- 11. manejo de excepción en Tpl
- 12. Manejo de señales en C
- 13. manejo de señales en C++
- 14. Manejo de errores en PHP
- 15. Manejo de formularios en Pyramid
- 16. Manejo de excepciones en hilos
- 17. Manejo de nulos en Datawarehouse
- 18. Manejo de señales en pthreads
- 19. Manejo de señales en Windows
- 20. manejo de excepciones en C#
- 21. Manejo de RuntimeExceptions en Java
- 22. Manejo de eventos en Haskell
- 23. manejo en Boost.Asio
- 24. manejo en Groovys XmlSlurper
- 25. manejo en Haskell
- 26. manejo en VisualBasic
- 27. Jackson error de deserialización manejo
- 28. Biblioteca de animación 2D Scala
- 29. Problema con el manejo de señales, manejo de interrupciones
- 30. ¿Las propiedades de mis actores de Scala deben marcarse como @volatile?
No veo cómo responde esa pregunta. ¿Podrías expandirte? "Intercambio en el tiempo de ejecución" parece implicar una configuración respondiendo dinámicamente al entorno de tiempo de ejecución. Pero muchos parámetros de configuración son desconocidos para el tiempo de ejecución, como contraseñas de DB o qué administrador recibe correos electrónicos de error. Podríamos hablar sobre los mecanismos de descubrimiento de servicios, pero eso es demasiado para proyectos pequeños y ellos tendrán sus propios parámetros de configuración, dando un puntapié a la pregunta cuesta abajo. En algún momento, debe proporcionar entrada a su programa. Si lo organiza en pares clave/valor, tiene archivos de propiedades ... – DrGary
Para configuraciones específicas del entorno (que realmente deberían ser las únicas que se externalizan) puede obtener propiedades del sistema como en Java, como esta: val databaseName = System.getProperty ("myapp.db.name"). A continuación, configure estos en su secuencia de comandos de inicio y asígnelos al tiempo de ejecución de la siguiente manera: java -Dmyapp.db.name = DeeBee MainClass. En cuanto a las contraseñas, es probable que no las tengas en los archivos, pero es posible que tu aplicación te pregunte cuándo se inicia. – George
Puedes dar un ejemplo. Esto suena muy útil. – Jus12