studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java xml configuration frameworks configurationmanager

programacion - Marco de configuración de Java



manual de programacion android pdf (14)

Estoy en proceso de descartar todos los valores codificados en una biblioteca de Java y me preguntaba qué marco sería el mejor (en términos de configuración cero o cercana a cero) para manejar la configuración en tiempo de ejecución. Preferiría archivos de configuración basados ​​en XML, pero no es esencial.

Por favor, solo responda si tiene experiencia práctica con un marco. No busco ejemplos, sino experiencia ...


Acabo de publicar un breve fragmento de code sobre el uso de ClassPathResource de Spring como alternativa a IoC. ClassPathResource le permite colocar archivos de propiedades en cualquier lugar en el classpath (por ejemplo, todo en un solo lugar, o como pares del código que configuran. Mi ejemplo simplemente usa java.util.Properties, por lo que puede usar el texto sin formato "name = value" style o su formato XML.



En cuanto a las sugerencias para usar java.util.Properties, comenzando en jdk 1.5, la API de preferencias (java.util.prefs) parece ser la alternativa preferida para usar la API de propiedades.

Razones: mayor escalabilidad, neutralidad de back-end, ect.


Los archivos de propiedades son muy simples, si necesita algo más funcional, puede formatear algunos de sus archivos de configuración como clases de Java. Estos pueden colocarse en un paquete / módulo diferente y pueden precompilarse o cargarse en tiempo de ejecución con una biblioteca como BeanShell.

Nota: en el caso más simple (precompilado), no necesita ninguna biblioteca adicional.


Podrías echar un vistazo a tools4j-config recientemente anunciado cuya declaración de misión es permitirle manejar fácilmente la configuración en tiempo de ejecución.


Por favor, eche un vistazo a esta URL: http://issues.apache.org/jira/browse/CONFIGURATION-394

El marco de configuración que estamos buscando es algo sobre la configuración de Apache Commons y debe admitir problemas de simultaneidad, problemas de JMX y la mayoría de las tiendas (por ejemplo, archivo .properties, archivos .xml o PreferencesAPI).

Lo que el equipo weblogic proporciona en ''Consola de administración'' es interesante, ya que a través de él puede tener actualizaciones transaccionales (atómicas) en las configuraciones para que se notifique a los oyentes registrados.

¡Los chicos Apache insisten en que este proyecto está fuera de alcance de la Configuración de los Comunes, tal vez!

He adjuntado un marco de configuración simple, mira por favor.


Puedes probar YamlBeans . De esta forma puede escribir las clases que desee para guardar sus datos de configuración, luego puede escribirlos y leerlos automáticamente desde y hacia YAML.

YAML es un formato de datos legible por humanos. Tiene más poder expresivo que java.util.Properties. Puede tener listas, mapas, anclas, datos escritos, etc.



Si sus valores codificados son simples pares clave-valor, debe consultar java.util.Properties . Es mucho más simple que xml, más fácil de usar y extremadamente trivial de implementar.

Si está trabajando con Java y los datos que está almacenando o recuperando desde el disco están modelados como un par de valores clave (que suena como si fuera su caso), entonces realmente no puedo imaginar una mejor solución.

He usado archivos de propiedades para la configuración simple de paquetes pequeños en un proyecto más grande, y como una configuración más global para un proyecto completo, y nunca he tenido problemas con él.

Por supuesto, esto tiene el enorme beneficio de no requerir ninguna biblioteca de terceros para utilizar.


Tiendo a usar java.util.Properties (o clases similares en otros lenguajes y marcos) envuelto en una clase de configuración específica de la aplicación la mayor parte del tiempo, pero estoy muy interesado en alternativas o variaciones sobre esto. Especialmente porque las cosas pueden ser un poco complicadas si se trata de diálogos de configuración gráfica o múltiples vistas en los datos de configuración.

Desafortunadamente no tengo ninguna experiencia con bibliotecas específicas para Java (excepto con las que he escrito), pero cualquier puntero sería apreciado.

Actualizar

DE ACUERDO. Eso no era del todo cierto, tres es el Proyecto de Configuración de Spring Java .


la herramienta de utilización inteligente de parámetros (InPUT, page ) permite externalizar casi cualquier decisión (codificada) como un parámetro en un archivo de configuración basado en XML. Se inició a principios de 2012 como respuesta a las deficiencias percibidas en las herramientas de configuración existentes con respecto a la generalidad y la separación de preocupaciones.

InPUT es probablemente más poderoso que la mayoría de los casos de uso, ya que permite la formulación independiente de datos experimentales (entrada-salida) del lenguaje de programación , con características tales como la definición de descriptor complejo para mapeos de clases o la configuración aleatorizada de desove y validación basada en rangos de valores predefinidos (para prueba e investigación, por ejemplo, simulaciones de Monte Carlo). Puede definir parámetros con subparámetros, restricciones relativas en los valores de los parámetros (parámetro numérico> param b), etc.

Todavía está en versión beta, pero bastante estable, lo uso para mi investigación, para la configuración y documentación de experimentos y para fines de enseñanza . Una vez que esté disponible para otros idiomas (adaptador C ++ en la tubería), otros investigadores / profesionales pueden reutilizar los descriptores ejecutando sus implementaciones de los mismos algoritmos en C ++ (utilizando el concepto de mapeo de códigos). De esta forma, los resultados experimentales pueden validarse / los programas pueden migrarse más fácilmente . La documentación todavía está en proceso de trabajo, pero hay un par de ejemplos disponibles en la página. InPUT es un software de código abierto.

Para aquellos interesados, el Documento de investigación conceptual .


Apache Commons Configuration funciona muy bien. Es compatible con tener la configuración almacenada en una amplia gama de formatos en el back-end, incluyendo propiedades, XML, JNDI y más. Es fácil de usar y ampliar. Para obtener la mayor flexibilidad, use una factory para obtener la configuración y simplemente use la interfaz de Configuración después de eso.

Dos características de la configuración de Commons que lo diferencian de un archivo de propiedades directo es que admite la conversión automática a tipos comunes (int, float, matrices de cadenas) y admite la sustitución de propiedades:

server.host=myHost server.url=http://${server.host}/somePath


Configuración de Commons

Estamos usando esto Los archivos de propiedades por sí solos son mucho más fáciles de manejar, pero si necesita representar una configuración más común de datos comunes, puede hacerlo y leer sus archivos de propiedades también.

Si no haces nada complicado, me quedaré con los archivos de los properites.


wrote sobre esto hace un par de semanas y llegué a la conclusión de que XML es una de las anotaciones más utilizadas.

¿Es el mejor? No lo creo, realmente me gusta JSON, pero las herramientas aún no están en XML así que supongo que tenemos que esperar y ver.