2009-05-16 11 views
34

Mi aplicación está configurada por algunos archivos de configuración Spring XML.¿Buenas prácticas para incluir la configuración XML en Java classpath?

¿Es una buena práctica en Java incluir los archivos XML en el classpath y hacer referencia a ellos en mi aplicación utilizando el classpath?

+0

@JohnnyCageWins ¿tiene una mejor propuesta? –

+3

Estaba bromeando, no tratando de ser ofensivo. Es solo una respuesta de Jon Skeet no se acepta como una broma después de leer los hechos del skeet de Jon. @ Nathan Feger – Bastardo

+125

La pregunta de "Jon Skeet Facts" me trajo aquí. – Crocode

Respuesta

219

Por lo general, primero miro en una propiedad del sistema y luego en el classpath. así:

java -DconfigFile=/filelocation/file.xml 

se puede leer como:

String propfile = System.getProperty(configFile); 
if (propfile != null) { 
// read in file 
    new File(propfile); 
... 
} else { 
    // read in file from classpath 
    getClass.getResource("/configfile.xml") 
} 
+205

¡tú derrotaste a Jon Skeet, amigo! – dierre

+81

@dierre es el más alto honor otorgado a un programador. –

+53

Te doy un +1 solo para mantenerlo así. – dierre

54

Es agradable poder configurarlo en ambos sentidos, ya sea directamente como un archivo, o a través de un recurso en el classpath que puede o no estar en un archivo jar. Eso te da mucha flexibilidad.

3

Acepto el póster anterior (+1) - tengo una opción en caso de que algún día lo necesite. Sin embargo, hay una trampa. Podrías crear muchos dolores de cabeza si esas poderosas herramientas cayeran en las manos equivocadas. No hay mucha diferencia entre los archivos de contexto de primavera y las clases de Java, es un código. Así que, fíjate quiénes son tus usuarios. Un gurú QA demasiado entusiasta podría hacerte la vida imposible si no estás preparado.

2

tiendo a poner los archivos de configuración XML en la ruta de clase y exponer configuración que es relevante para ser adaptado (por ejemplo, para diferentes entornos) en archivos de propiedades externos usando un PropertyPlaceholderConfigurer o similar (depende de los requisitos reales).

Una buena manera de crear perfiles es tener archivos de propiedades con un conjunto de configuraciones para cada entorno y dejar que el administrador elija el que necesita proporcionando una propiedad del sistema cuyo valor se traduce en una búsqueda de archivos de propiedades. Ver API doc de PropertyPlaceholderConfigurer para más detalles.

Cuestiones relacionadas