Généralement, nous configurons la gestion des transactions pour le code de couche de service dans le fichier de configuration de Spring Application.xml. Nous pouvons améliorer les méthodes de service ou le traitement des transactions telles que le retour en arrière des transactions. Cependant, lorsque nous rencontrons un problème, si la méthode de la couche de service est appelée dans la classe de contrôleur, la gestion des transactions configurée ne sera pas valide. Si nous interrogeons les informations pertinentes et trouvons la raison. En fait, le printemps et le printemps sont des relations parent-enfant, le printemps est des conteneurs parents et SpringMVC est des conteneurs enfants. En d'autres termes, l'application.xml devrait être responsable de la numérisation des annotations de @Controller telles que @Service, tandis que le fichier de configuration de SpringMVC ne doit être responsable que de la numérisation du @Controller, sinon il entraînera des analyses répétées pour que les transactions configurées dans le conteneur Spring soient invalides.
Par conséquent, la méthode de configuration correcte doit être:
Fichier de configuration de ressort: application.xml
<context: composant-scan Base-Package = "org.bc.redis" use-default-filters = "true"> <! - Excluez les classes avec @Controller Annotation -> <context: exclure-Filter Type = "Annotation" expression = "org.bc.redis.Controller.USERController" /> </ Context: Component-Scan>
ou
<! - Spécifiez le package numérisé, évitez les packages contenant @Controller Annotation -> <Context: Component-Scan Base-Package = "org.bc.redis.service" use-default-filters = "true"> </ context: Component-Scan>
Fichier de configuration de Springmvc: springmvc.xml
<! - Scannez uniquement les packages avec @Controller Annotation pour éviter les analyses répétées -> <Context: Component-Scan Base-Package = "org.bc.redis.Controller" Use-Default-Filters = "True"> </ Context: Component-Scan>
enfin
Après les tests, le principal problème est que le fichier de configuration de SpringMVC scanne la portée du package. Même si le fichier de configuration de Spring scanne l'annotation @Controller, il sera annulé une fois à SpringMVC. Tant que le service de gestion des transactions n'est pas annulé, il n'y aura pas de problème d'échec des transactions.
Résumer
Ce qui précède est tout le contenu de cet article sur les raisons et les solutions pour la gestion des transactions non valide de la configuration Spring + SpringMVC. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!