Как правило, мы настраиваем управление транзакциями для кода уровня обслуживания в файле конфигурации Spring.xml. Мы можем улучшить методы обслуживания или обработку транзакций, такие как откат транзакций. Однако, когда мы сталкиваемся с проблемой, если в классе контроллера вызывается метод уровня обслуживания, настроенное управление транзакциями будет недействительным. Если мы запросите соответствующую информацию и найдем причину. На самом деле, Spring и Springmvc-это отношения между родителями и детьми, пружина-родительские контейнеры, а Springmvc-это детские контейнеры. Другими словами, Application.xml должен нести ответственность за сканирование аннотаций @Controller, таких как @Service, в то время как файл конфигурации SpringMVC должен нести только сканирование @Controller, в противном случае он приведет к повторному сканированию, чтобы транзакции настроены в контейнере пружины быть недействительным.
Следовательно, правильный метод конфигурации должен быть:
Файл конфигурации пружины: Application.xml
<context: component-scan base-package = "org.bc.redis" use-default-filters = "true"> <!-Исключение классов с аннотацией @controller-> <Контекст: exclude-filter type = "annotation" Expression = "org.bc.redis.controller.usercontroller"/> </context: component-scanis.
или
<!-Укажите отсканированный пакет, избегайте пакетов, содержащих аннотацию @Controller-> <Контекст: Component Scan Base-package = "org.bc.redis.service" use-default-filters = "true"> </context: component-scan>
Файл конфигурации Springmvc: Springmvc.xml
<!-Сканируйте только пакеты с аннотацией @Controller, чтобы избежать повторных сканов-> <Контекст: Component Scan Base-package = "org.bc.redis.controller" use-default-filters = "true"> </context: component-scan>
наконец
После тестирования основная проблема заключается в том, что файл конфигурации SpringMVC сканирует область пакета. Даже если файл конфигурации Spring сканирует аннотация @Controller, она будет спасен один раз в SpringMVC. Пока служба управления транзакциями не будет спасен, не будет проблем с отказом от транзакций.
Суммировать
Выше приведено все содержание этой статьи о причинах и решениях для неверного управления транзакциями конфигурации Spring+Springmvc. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!