Printemps contexte fichiers de l'organisation et des pratiques exemplaires
Nous avons commencé à utiliser le framework Spring dans mon projet. Après pour faire plus ample connaissance avec les fonctionnalités de base (Cio), nous avons commencé à l'aide de spring aop et de la sécurité printemps ainsi.
Le problème est que nous avons maintenant plus de 8 contexte différent, aux fichiers et je sens que nous n'avons pas accordé suffisamment d'attention pour l'organisation de ces fichiers et leurs rôles. De nouveaux fichiers ont été introduites que le projet a évolué.
Nous avons contexte différent des fichiers: métadonnées, aop, d'autorisation, de services, de ressources web (c'est une bonne application). Ainsi, lorsqu'un développeur veut ajouter un nouveau bean il n'est pas toujours clair dans quel fichier il devrait l'ajouter. Nous avons besoin de méthodologie.
La question:
Est la meilleure pratique pour le printemps des fichiers de l'organisation?
Devrait le contexte fichiers encapsuler des couches (DAL , la Logique d'Entreprise, site Web) ou un cas d'utilisation ? ou les Flux?
Vous devez vous connecter pour publier un commentaire.
Si vous êtes encore assez tôt dans le projet, je voudrais vous conseil fortement de regarder annotation de configuration. Après la conversion des annotations nous avons seulement 1 fichier xml de définition, et c'est vraiment tout petit, et c'est un grand projet. Annotation de configuration met l'accent sur votre mise en place de l'xml. Il est également plus ou moins supprime la assez redondant de la couche d'abstraction qui est le ressort "de la fève de nom". Il s'avère que le haricot nom existe surtout parce que de xml (La fève nom existe toujours dans l'annotation de la configuration, mais n'est pas pertinent dans la plupart des cas). Après avoir fait ce commutateur sur un projet d'envergure, tout le monde est à 100% d'accord que c'est un beaucoup mieux et nous avons aussi assez décent, la preuve qu'il est plus productif de l'environnement.
J'aimerais vraiment recommander personne qui est à l'aide de printemps pour passer des annotations. Il est possible de mélanger ainsi. Si vous avez besoin de transition de conseils, je suppose que c'est facile à poser sur de la SORTE 😉
Commencer avec applicationContext.xml et de les séparer quand il y a beaucoup de haricots qui ont quelque chose en commun.
Pour vous donner une idée d'une éventuelle installation, dans l'application que je suis en train de travailler, voici ce que j'ai dans le serveur:
De l'interface clients, étant donné que ce projet a plusieurs, il y en a un dossier avec le contexte partagé des fichiers, et en plus de cela, chaque client a son propre dossier de contexte. Contexte partagé des fichiers:
Spécifiques à l'application les fichiers:
Printemps contexte fichiers contiennent des définitions de haricots, alors je pense qu'il est préférable de suivre OO principe et la structure de la même façon que la structure de vos classes dans les packages. Nous avons l'habitude de créer des packages pour encapsuler un ensemble de classes qui travaillent ensemble pour résoudre un problème spécifique. Un paquet généralement encapsule une couche horizontale (couche de base de données, middleware, la logique d'entreprise ou d'une partie d'entre eux). Il y a des occasions qu'un package contient les classes qui correspondent à une couche horizontale (cas d'utilisation ou de débit comme vous l'avez dit). En général, je recommande de créer un fichier de contexte pour chaque paquet ou ensemble de paquets. Lorsque vous ajoutez un nouveau bean, l'ajouter au fichier de contexte qui correspond à l'ensemble de la classe.
Bien sûr, cela ne doit pas être une règle très stricte, comme il pourrait y avoir des cas qu'il serait bénéfique de suivre une autre pratique.
Je trouve que je me les briser par couche.
Quand je écrire des tests unitaires pour chaque couche, je remplace le contexte de production avec des valeurs pertinentes pour les tests.
yep - split sur des rôles similaires pour les haricots qui y sont. Comme pour les annotations, je crois qu'il ne "peut" avoir un petit rôle à jouer, peut-être avec l'opération de définitions, mais sinon, ils ont juste jamais lier votre code et vous pourriez aussi bien être l'ajout de printemps (ou toute autre 3e partie) des références directement partout. Pour moi annotations=raccourci et de la dette technique. Ils ne sont pas de l'extérieur configurable, donc ce n'est pas trivial de rewire, ou unwire votre code, et les limites de la réutilisation. Un bean est toujours coincé avec son annoté des dépendances et de la configuration ne peut pas être utilisé par plusieurs projets/processus simultanément avec un câblage différent et config.
juste mes 2 cents.
Je suivrais printemps recommandations du lieu et le contexte de fichiers dans
META-INF/spring
comme décrit dans la Spring Roo documentation. En général, je vous recommande d'essayer les roo et à la suite de leur projet de structure et de présentation.Exemple
Printemps XML vs annotations
Il y a beaucoup de bons articles sur le sujet, mais je voudrais briser une idée fausse commune, parce que les deux approches ont leurs mérites: Si vous voulez séparer la configuration de la mise en œuvre effective, il est plus facile avec le XML, mais vous pouvez obtenir la même chose avec des annotations, comme krosenvold dit. Cependant, lors de l'utilisation de fichiers de configuration XML, haricot noms sont uniquement requis si le bean doit être référencé directement. Vous pouvez toujours utiliser auto-câblage par nom ou par type.
La seule chose importante est que vous devez rester cohérent tout au long du projet, ou, lorsque cela est possible, à travers vos projets de l'entreprise.
La rupture de la configuration dans des fichiers séparés est utile pour moi en termes d'analyses. Sur un petit projet, je vais mettre la Sécurité Printemps config en "securityContext.xml" et le reste de mes grains de café "applicationContext.xml." Ensuite, lors de l'exécution des tests d'intégration, il est facile d'activer ou de désactiver la sécurité simple en choisissant d'inclure ou securityContext.xml. Ce presque semblable à de l'AOP dans un sens, à vous d'ajouter des fonctionnalités supplémentaires à l'application, en choisissant la possibilité d'inclure des fichiers particuliers.