2009-06-08 12 views
10

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

2

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.

+0

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

+0

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

+0

Puedes dar un ejemplo. Esto suena muy útil. – Jus12

4

¿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.

2

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.