2012-05-29 15 views
18

Estoy un poco confundido entre usar un archivo de constantes y un archivo de propiedades en Java.Archivo de propiedades vs clase Constantes en Java

¿Cómo decidir cuándo utilizar Constants.java y cuándo usar un .properties archivo?

+1

Perpahs puede obtener lo mejor de ambos mundos utilizando un [ListResourceBundle] (http://docs.oracle.com/javase/7/docs/api/index.html?java/util/ListResourceBundle.html) –

Respuesta

23

Use constantes cableadas en su código Java cuando no desea que usuarios/deployers/testers/tests las cambien.

Usa un archivo de propiedades cuando quieres esto es una posibilidad.

El punto es que el cambio de una constante cableada en el código fuente de la aplicación implica la edición del código fuente, la reconstrucción y la redistribución. Por el contrario, cambiar un archivo de propiedades puede ser tan simple como encender NotePad.

+0

As dijiste que cambiar el archivo de propiedades es simple, mientras que cambiar el archivo de constantes requiere que reconstruyamos la aplicación. Entonces, ¿no deberíamos preferir siempre usar el archivo de propiedades? – Anand

+3

Lee la primera oración ... –

1
  • Constantes - cuando no le importa volver a compilar la aplicación cada vez que cambia el valor. Una especie de ironía aquí. ¿Por qué cambiaría algo si se le ha llamado un archivo de constante :)

  • Propiedades - cuando se desea el lujo de tan solo cambiando el valor y tal vez reiniciar la aplicación para recoger el cambio.

1

En general, cualquier elemento en una clase de constantes se considera "codificado"; es decir, debe volver a compilar para realizar cambios.

Utilice un archivo .properties para cosas como la configuración, donde no tiene que forzarse a volver a compilar solo para realizar cambios. De esta manera, puede simplemente cambiar el archivo de propiedades y reiniciar su aplicación.

1

Normalmente utiliza archivos de propiedades cuando desea especificar parámetros que varían desde la implementación hasta la implementación o en el transcurso del tiempo.

Usa constantes cuando los parámetros no son dinámicos y, por lo tanto, no se supone que cambien en función de factores externos. Debe volver a compilar la clase cada vez que cambie un valor.

1

Hay muchos aspectos diferentes a considerar. Lo más importante es que

  • puede editar archivos de propiedades y usarlos sin volver a compilar su aplicación;
  • archivos de propiedades no contienen código, por lo que todo el mundo puede cambiarlos sin ningún conocimiento de Java.

Estos aspectos hacen que el archivo de propiedades sea realmente útil para almacenar configuraciones.

Por otro lado, las clases de constantes deben compilarse, pero son "más seguras" si planea no cambiar esas constantes con mucha frecuencia.

1

Las constantes se arreglan en tiempo de compilación. Entonces, si no prevé ningún cambio de valores, las constantes serán una buena idea.

0

Las propiedades tienen la ventaja de ser externalizables. Puede tener un archivo de propiedad para desarrollo, otro para prueba y otro para producción. Muchas veces, sin embargo, las propiedades que raramente cambian, que son internas para el funcionamiento del software se ponen en el archivo de propiedades, lo que las hace difíciles de administrar.

Las constantes OTOH se compilan para que cualquier error se capture en el momento de la compilación.

Así que la respuesta es, depende. Si los valores en las propiedades son realmente cambios de configuración que desea externalizar, utilice el archivo de propiedades. de lo contrario, conviértelos en constantes Java. Sin embargo, puedes terminar usando ambos.

5

Mi lista de verificación

Ficha del inmueble:

Es configurable por environemnt etc.

mensajes, etiquetas, etc.

aplicable a la situación particular (lista de estados de reglas etc.) pares clave-valor. puede ser modificada por otra persona que no sea desarrollador, los analistas, los usuarios de negocios, etc.

constante:

son constantes. No configurable Principalmente para optimización y reutilización. Para evitar que las llaves se dispersen.

Para constantes como YES = "yes". No es realmente un valor clave. Teclas para la memoria caché, etc.

Constantes para asegurar que la recuperación y el ajuste utilizan la misma clave aunque desde diferentes lugares en la aplicación, EJEMPLO xyz.put (KeyConstants.SOME_KEY, "somevalue"); xyz.get (KeyConstants.SOME_KEY) de diferentes clases, ofcouse xyz compartido o singleton.