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 :)
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.
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.
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.