2009-08-26 5 views
9

Je décide d'une convention de dénomination pour mes fichiers de contexte d'application Spring. Je suis tombé sur ce blog et quelques tutoriels suggérant applicationContext-<name>.xml est le chemin à parcourir. Je ne suis généralement pas une trouvaille de mélange de cas de chameau avec des tirets/underscores. Quelles sont les autres conventions de nommage que vous avez vues?Convention de dénomination pour le contexte d'application Spring XML

Editer: Je pense également à imbriquer des fichiers de contexte dans le paquet qui leur correspond. Par exemple, mes classes/interfaces qui se rapportent à la commande iraient dans le fichier de contexte com/mycompany/order/spring-context.xml. J'aurais un applicationContext.xml de haut niveau qui tire tout ensemble. Suggestions?

+6

Faites attention à la création de fichiers de contexte d'application très précis (c'est-à-dire par paquet). Avoir des définitions de bean réparties dans de nombreux fichiers différents peut devenir un problème de maintenance; il est difficile de voir la "grande image". Et il peut y avoir des moments où vous voulez des câblages alternatifs pour les mêmes haricots pour les tests et autres joyeusetés. Je pense qu'un fichier par sous-système majeur ou couche de l'application a plus de sens. Vous pouvez toujours les séparer plus finement lorsque le besoin s'en fait sentir. –

Répondre

8

S'il y avait une convention, je voudrais que ce soit:

  1. fichiers stockés dans des emballages (non en package par défaut) pour éviter les conflits de noms potentiels et signifie aussi que je n'ai pas inclure l'application nom en eux, il est défini par le paquet.
  2. fichiers nommés cas tout bas avec un « - » pour séparer les noms

Je tends à préfixer mes fichiers de configuration de printemps avec « ressort » rend plus évident ce qu'ils sont utilisés pour, mais ce n'est pas nécessairement obligatoire. Mais permettez-moi de dire que cela fonctionnerait pour la façon dont j'ai traité mes fichiers de printemps, peut ne pas fonctionner dans tous les contextes.

IMHO applicationContext- <nom> .xml est un peu verbeux (long) et j'aime tout en minuscules car il les différencie de ma source java et (je pense) les rend plus faciles à lire. Je soutiens beaucoup la convention applicationContext-<name>.xml

4

Pour un projet MVC Web, je tends à décomposer les différents fichiers de contexte le long des lignes de responsabilité:

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

Soit chameau ou '-' séparé fonctionnerait aileron e, tant que vous êtes cohérent. Je sais dans notre cas que nous ne mettons pas les fichiers de contexte dans le même répertoire que le code, à moins que le code lui-même ne soit au courant de Spring, ce qui n'est pas le cas dans notre cas.

Nous avons deux cas pour cela, où nous utilisons maven 2, le fichier de contexte va dans un répertoire resource/spring, où resource est un frère du répertoire source java. Lorsque maven 1 est utilisé, nous créons simplement un paquet de ressorts de racines et mettons le contexte là. Ces deux cas supposent que le code Java est "régulier". Dans le cas des ensembles Wars, EJB et OSGi, les fichiers résident généralement dans le répertoire meta-inf.

De plus, nous n'utilisons pas un contexte d'application de niveau supérieur pour «tirer» tout ensemble. Nous créons simplement un contexte avec plusieurs fichiers de contexte. Nous trouvons cela beaucoup plus simple pour tester de différentes manières, des tests unitaires avec des objets simulés, des tests d'intégration sans serveur et des tests d'intégration complets déployés sur un serveur. Dans tous ces scénarios, il suffit de reconfigurer la façon dont le contexte est créé au lieu d'avoir un contexte «maître» pour chaque scénario.

2

Je supporte beaucoup la convention applicationContext-<name>.xml.

En général, <name> fait référence au nom du module Maven dans tous nos projets. Ainsi, chaque module nécessitant une configuration Spring a son propre fichier applicationContext-<name>.xml. Le "module d'exécution", c'est-à-dire le module qui représente le type de point d'entrée dans l'application (WAR, EAR, etc.), a un seul applicationContext.xml qui importe uniquement tous les fichiers applicationContext-<name>.xml.

Nous utilisons cette convention strictement dans tous nos projets Maven/Spring et il s'est avéré extrêmement simple, clair et efficace.

Questions connexes