Принятая основная строительная среда: SpringMVC, Mybatis, MySQL, Tomcat Spring Management Разбивает недостатки традиционного управления глобальными транзакциями и управления локальной транзакцией, чтобы модель единой управления транзакциями могла использоваться в любой среде, и вы можете написать код после того, как код может написать код после Затем настраиваем различные политики управления транзакциями из вашего кода в разных условиях. Использует Springmvc и Mybatis, он равномерно помечен для объявления сервиса и контроллера
Поскольку порядок загрузки файлов конфигурации на сервере запускается web.xml --- root-context.xml (файл конфигурации Spring) --- Servlet-context.xml (файл конфигурации Springmvc) из-за корневого контекста Конфигурация .xml В файле контроллер будет отсканирован сначала, но в настоящее время служба еще не была усилена транзакцией. емкость), поэтому мы должны находиться на корне-context.xml, не сканируйте контроллер, конфигурация заключается в следующем:
<!-автоматически сканируйте компонент, чтобы удалить контроллер ниже контроля. -> <context: Component-Scan Base-package = "com.sence"> <Контекст: Exclide-Filter type = "Annotation" = "org.springframework.sterotype.contr oller" />. > <!-автоматически сканируйте компонент, чтобы удалить контроллер под контролем. -> <context: component-scan base-package = "com.sence"> <context: exclude-filter type = "annotation" = "org.springframework.sterotype.contr oller" /> < /context: component-scan "Контроллер сканирования в службе context.xml, не сканируя службу, конфигурация заключается в следующем:
<!-сканировать весь контроллер, но не сканируйте службу-> <контекст: компонент-сканирование Base-package = "com.sence"> <Контекст: включает в себя фильтр-тип = "аннотация" = "или. .Controller " /> <context: exclude free type =" annotion "Expression =" org.springframework.steeotype.service " /> < /context: component --- Контроллер, но не сканируйте службу--> <Контекст: Component-Scan Base-Package = "com.sence"> <Контекст: включайте тип Filter = "Annotation" = "org.springframework.stereotype.contro ller" /> <context: exklide-filter type = "аннотация" = "Org.springframework.sterotype.service" /> < /context: component-scan>Следующее можно настроить для управления оператором, конфигурация заключается в следующем:
<!-Transaction Manager, используйте DataSourcEtransActionGager-> <Bean id = "txmanager"> <name = "dataSource" Ref = "DataSource" /> < /bean> <!-Sprin. Config> <aop: pointcut id = "fooservicemethods" exposition = "execution (*com.sence.*.*. Impl.*.*(..))" <aop: Advisor Advest-ref = "txadvice" Pointcut-Ref = "FooserviceMethods"/> </aop: config> <tx: usd id = "txadvice" transaction-manager = "txmanager"> <tx: атрибуты> <метод nam e = "find*read- только =" true " /> <tx: method name = "love*" read-only = "true"/> <tx: method name = "*" roplack-for = "customexception"/> </tx: атрибуты> </tx: консультирование > <!-Transaction Manager, используйте DataSourCetransActionGager-> <bean id = "txmanager"> <name = "dataSource" ref = "dataSource"/> </> bean> <!-Управление декларативными транзакциями-> <aop: Config> <aop: pointcut id = "fooservicemethods" express = "exepring (*com.sence.*.*.*.*(..))" aop: Advisor ref = "txadvice" pointcut-ref = "fooservicemethods "/> </Aop: config> <tx: usd id =" txadvice "transaction-manager =" txmanager "> <tx: attr ibutes> <tx: method name =" find*"readment =" true "// > <tx: method name = "load*" read-only = "true"/> <tx: method name = "*" roplack-for = "customexception"/> </tx: атрибуты> </tx: консультант>На этом этапе моя конфигурация была завершена, но после моего теста, когда я пошел в таблицу базы данных MySQL, один из объектов был неправильным, и дела Customexception не вернулись. , шаги заключаются в следующем: 1. Узнайте, является ли объявление об объявлении -типе транзакции неправильно, если точка входа неверна