L'environnement de construction de base adopté: SpringMVC, MyBatis, MySQL, Tomcat Spring Management Transaction a décomposé les inconvénients de la gestion traditionnelle des affaires mondiales et de la gestion des affaires locales, afin qu'un modèle de gestion des transactions unifié puisse être utilisé dans n'importe quel environnement. Une fois, vous pouvez rédiger un code. Et mybatis, il est uniformément étiqueté pour déclarer le service et le contrôleur
Étant donné que l'ordre de chargement des fichiers de configuration au serveur démarre est web.xml --- root-clext.xml (fichier de configuration de Spring) --- servlet-context.xml (fichier de configuration de Springmvc), en raison du root-context Configuration .xml Dans le fichier, le contrôleur sera analysé en premier, mais à l'heure actuelle, le service n'a pas encore été amélioré par la transaction. capacité), nous devons donc être sur le contrôleur root-context.xml ne pas le contrôleur, la configuration est la suivante:
<! - Scannez automatiquement le composant, voici pour supprimer le contrôleur sous le contrôleur. -> <Context: Component-Scan Base-Package = "com.sence"> <Context: Exclude-Filter Type = "Annotation" = "org.springFramework.Sterotype.Contr oller" />. > <! - Scannez automatiquement le composant, c'est ici pour supprimer le contrôleur sous contrôle. -> <contexte: composant-scan Base-Package = "com.sence"> <contexte: exclure-filter type = "annotation" expression = "org.springframework.sterereotype.contr oller" /> </ context: composant- scan "Analyser le contrôleur dans servlet-context.xml tout en ne balayant pas le service.
<! - Scannez tous les contrôles mais ne scannez pas le service-> <contexte: composant-scan Base-Package = "com.sence"> <contexte: include-filter type = "annotation" = "ou. G.springframework.sterreotype .Controller "/> <contexte: exclure-libre type =" anotion "expression =" org.springframework.steootype.service "/> </ context: composant ---! Controller mais pas le service de scan- -> <contexte: composant -Scan Base-Package = "com.sence"> <contexte: include-filter type = "annotation" expression = "org.springframework.sterreotype.contro ller" /> <contexte: exclure-Filter type = "annotation". = "Org.springframework.sterotype.service" /> </ context: composant-scan>Les éléments suivants peuvent être configurés pour la gestion de l'instruction, la configuration est la suivante:
<! - Transaction Manager, utilisez DataSourceTransActionager-> <bean id = "txManager"> <propriété name = "dataSource" ref = "dataSource" /> </ bean> <! - sprin. Config> <aop: Pointcut id = "FooserviceMethods" exposition = "Execution (* com.sence. *. *. Imp. *. * (..))" <aop: conseiller conseils-ref = "txadvice" Pointcut-ref = "FOOSVERICEMETHODS" /> </ AOP: config> <tx: conseils id = "txadvice" transaction-manager = "txManager"> <tx: attributs> <méthode nam e = "find *" lise- seulement = "true" /> <tx: méthode name = "love *" read only = "true" /> <tx: méthode name = "*" rollback-for = "customexception" /> </ tx: attributs> </ tx: conseils > <! - Transaction Manager, utilisez DataSourceTransActionager-> <bean id = "txManager"> <propriété name = "dataSource" ref = "dataSource" /> </> bean> <! - Spring Decarative Transaction Management-> <aop: Config> <aop: Pointcut id = "FOOSERVICEMETHODS" Expression = "Exécution (* com.sence. *. *. *. * (..))" AOP: Advisor conseils-ref = "txadvice" Pointcut-ref = "FooserviceMethods "/> </ Aop: config> <tx: conseil id =" txadvice "transaction-manager =" txManager "> <tx: attr ibutes> <tx: méthode name =" find * "read only =" true "/ > <tx: méthode name = "Load *" read-only = "true" /> <tx: méthode name = "*" rollback-for = "customexception" /> </ tx: attributs> </ tx: conseils>À ce stade, ma configuration a été terminée, mais après mon test, lorsque je suis allé au tableau de la base de données MySQL en lots, l'un des objets était mauvais, et les affaires de garde ne sont pas revenus. , les étapes sont les suivantes: 1. Découvrez si la déclaration des transactions de type Déclaration est erronée, si le point d'entrée est faux