web-dev-qa-db-fra.com

Où mettre la logique métier dans le cadre mvc de spring?

Je ne sais pas où placer la logique métier au printemps mvc car je suis novice dans ce domaine. J'ai un indice sur ce qu'il faut faire, mais à cause du manque de connaissances au printemps mvc, je ne sais pas par où commencer. Je voudrais également demander si quelqu'un sait où je peux obtenir un bon tutoriel sur ce sujet ou un exemple complet d'une application Web mvc de spring dotée d'une logique métier. Quoi qu'il en soit, la logique métier dont je parlais est tout au sujet de la gestion de base de données :)

19
Mark Vincent Osea

Les classes @Controller servent en tant que C à partir de MVC. Notez que le contrôleur réel dans Spring MVC est DispatchServlet qui utilisera la classe @Controller spécifique pour gérer la demande d'URL.

Les classes @Service doivent servir pour votre couche de service. Ici, vous devriez mettre votre logique métier.

Les classes @Repository doivent servir pour votre couche d'accès aux données. Ici, vous devez mettre la logique CRUD: insérer, mettre à jour, supprimer, sélectionner.

@Service, @Repository et vos classes d'entité seront M de MVC. JSP et d’autres technologies de visualisation (JSP, Thymeleaf, etc.) seront conformes à V de MVC.

Les classes @Controller ne devraient avoir accès aux classes @Service que via des interfaces. Les classes @Service similaires ne doivent avoir accès qu'à d'autres classes @Service et à un ensemble spécifique de classes @Repository via des interfaces.

53
Luiggi Mendoza

De nombreuses personnes recommandent d'ajouter la logique métier à la couche de service. Personnellement, je découvre que ce n’est pas une bonne idée, en particulier lorsque vous commencez à tester: vous devrez peut-être gérer la persistance et la logique commerciale en même temps, ou vous moquer de tout, et les choses peuvent devenir très compliquées.

Je recommande de lire cet article avant de tirer des conclusions: Le plus gros défaut des applications Web Spring

En résumé, l’idée serait de déplacer la logique d’affaires vers la couche modèle et de simplifier les méthodes de vos services.

11
Gigi

En règle générale, votre logique métier se situe dans la couche service. Bien que vous puissiez mettre des règles de validation de base dans vos pojos avec des annotations JSR.

Pour une application Spring MVC, vous avez des contrôleurs, qui gèrent les demandes http, et une couche de domaine, qui sont des pojos représentant vos modèles d'entreprise. Vous avez souvent une couche de persistance ou DAO. Vous pouvez également avoir une couche de service pour vous aider avec une logique non triviale. 

Votre commentaire sur la gestion de la base de données n'a pas de sens. Les règles de gestion sont orthogonales au stockage des données. Le traitement de votre base de données devrait aller dans votre couche de persistance. 

0
Neil McGuigan