La estructura del archivo Maven puede ayudar con esto
En esencia, los archivos de configuración de Spring (que pueden tener cualquier nombre, no solo el genérico applicationContext.xml
) se tratan como recursos classpath y se archivan en src/main/resources
. Durante el proceso de compilación, estos se copian en el WEB-INF/classes
directorio, que es el lugar normal para que estos archivos terminen.
Las variaciones incluyen un spring
directorio adicional (por ejemplo src/main/resources/spring
) para separar los contextos de Spring de otros recursos dedicados a los marcos de aplicaciones. Es posible que desee dividir los contextos de la aplicación en capas dedicadas como:
example-servlet.xml
example-data.xml
example-security.xml
y así.
¿Qué pasa con diferentes entornos como desarrollo / prueba / producción?
Por lo general, su configuración de Spring debe recoger la configuración del entorno de su, ejem, entorno. Por lo general, esto significa utilizar JNDI, JDBC, variables de entorno o archivos de propiedades externos para proporcionar la configuración necesaria. Los enumero en orden de preferencia ya que JNDI es generalmente más fácil de administrar que los archivos de propiedades externas en un clúster de producción controlado.
En el caso de las pruebas de integración, es posible que deba usar un archivo de configuración de Spring "solo de prueba". Esto contendría contextos especiales que usan beans de prueba o configuración. Estos estarían presentes en src / test / resources y pueden tener un test-
prefijo para asegurarse de que los desarrolladores conozcan su propósito. Un uso típico sería proporcionar una fuente de datos que no sea JNDI, tal vez dirigida a una base de datos HSQLDB durante las pruebas automatizadas de compilación y se referenciaría dentro del caso de prueba.
Sin embargo, en general, la mayoría de los archivos de contexto de Spring no deberían necesitar modificaciones especializadas a medida que se mueven entre niveles. Debería darse el caso de que se use el mismo artefacto de compilación (por ejemplo, archivo WAR) en dev / test / production solo con credenciales diferentes.