2009-08-26 6 views
9

Estoy decidiendo sobre una convención de nomenclatura para mis archivos de contexto de la aplicación Spring. Me he encontrado con este blog y un par de tutoriales que sugieren applicationContext-<name>.xml es el camino a seguir. Generalmente no soy un hallazgo de mezclar una caja de camello con guiones/guiones bajos. ¿Cuáles son algunas otras convenciones de nomenclatura que ha visto?Convención de nomenclatura para el contexto de la aplicación Spring XML

Editar: También estoy pensando en anidar los archivos de contexto dentro del paquete que les pertenece. Por ejemplo, mis clases/interfaces que se relacionan con ordenar entrarían en el archivo de contexto com/mycompany/order/spring-context.xml. Tendría un nivel superior applicationContext.xml que combina todo. Sugerencias?

+6

Tenga cuidado al hacer archivos de contexto de aplicación muy detallados (es decir, por paquete). Tener definiciones de beans distribuidas en muchos archivos diferentes puede convertirse en un problema de mantenimiento; es difícil ver el "panorama general". Y puede haber ocasiones en las que desee cableados alternativos para los mismos granos para pruebas y otras cosas. Creo que un archivo por subsistema principal o capa de la aplicación tiene más sentido. Siempre puedes dividirlos más fino cuando sea necesario. –

Respuesta

8

Si había una convención, me gustaría que fuera:

  1. archivos almacenados en paquetes (no en paquete por defecto) para evitar posibles conflictos de nombre y también significa que no tengo para incluir la aplicación nombre en ellos, está definido por el paquete.
  2. archivos denominados caso todas inferiores con un '-' para separar los nombres

tiendo a anteponer mis archivos de configuración de la primavera con "primavera" hace que sea más evidente lo que se utilizan para, pero esto no es necesariamente obligatorio.

Pero déjenme decir que esto funcionaría por la forma en que he tratado mis archivos de primavera, puede que no funcione para todos los contextos.

mi humilde opinión applicationContext- <nombre> .xml es un poco prolijo (largo) y me gusta todo en minúsculas, ya que es que los diferencia de mi fuente de Java y (creo) hace que sean más fáciles de leer.

4

Para un proyecto de MVC Web, que tienden a romper los diversos archivos de contexto a lo largo de las líneas de responsabilidad:

  • appname-dao.xml
  • appname-servlet.xml
  • appname-services.xml
  • appname-security.xml
1

De cualquier camel case o '-' separado funcionaría fin e, siempre que seas consecuente. Lo sé en nuestro caso, aunque no ponemos los archivos de contexto en el mismo directorio que el código, a menos que el código en sí sea compatible con Spring, que en nuestro caso no lo es.

Tenemos dos casos para esto, donde usamos maven 2, el archivo de contexto va en un directorio de recurso/primavera, donde el recurso es un hermano del directorio de origen de Java. Cuando se utiliza maven 1, simplemente creamos un paquete de raíz de primavera y ponemos el contexto allí. Ambos casos asumen el código java "regular". En el caso de los paquetes Wars, EJB y OSGi, los archivos normalmente residen en el directorio meta-inf.

Además, no usamos un contexto de aplicación de nivel superior para 'juntar' todo. Simplemente creamos un contexto con múltiples archivos de contexto. Esto nos resulta mucho más simple de probar de diferentes maneras, pruebas unitarias con objetos simulados, pruebas de integración sin servidor y pruebas de integración completa implementadas en un servidor. En todos estos escenarios, simplemente reconfigure cómo se crea el contexto en lugar de tener un contexto 'maestro' para cada escenario.

2

Apoyo mucho la convención applicationContext-<name>.xml.

En general, <name> se refiere al nombre del módulo Maven en todos nuestros proyectos. Por lo tanto, cada módulo que requiere una configuración de Spring tiene su propio archivo applicationContext-<name>.xml. El "módulo de ejecución", es decir, el único módulo que representa el tipo de punto de entrada en la aplicación (WAR, EAR, etc.) tiene un solo applicationContext.xml que solo importa todos los archivos applicationContext-<name>.xml.

Utilizamos esta convención en toda la compañía estrictamente en todos nuestros proyectos Maven/Spring y ha demostrado ser extremadamente simple, clara y eficiente.

Cuestiones relacionadas