Хорошо, я понял проблему.Мне потребовалось целую вечность, чтобы понять это, и я не имел ничего общего с моей конфигурацией базы данных, поэтому я хочу помочь людям, у которых есть похожие проблемы.
В документации Spring говорится следующее:
<tx:annotation-driven/>
ищет только @Transactional для bean-компонентов в том же контексте приложения, в котором он определен. Это означает, что, если вы поместите <tx:annotation-driven/>
в WebApplicationContext для DispatcherServlet, он будет проверять только бины @Transactional в ваших контроллерах, ине ваши услуги.См. Раздел 15.2, «DispatcherServlet» для получения дополнительной информации.
В моем исходном посте нет описания моего сервлета, в котором есть следующие строки кода конфигурации:
myServlet.xml
<context:annotation-config />
<context:component-scan base-package="com.myDomain.*" />
Это приводит все аннотированные компоненты, включая контроллеры, службы и репозитории, в контекст сервлета, а не в контекст приложения.И в этом заключается проблема.Когда Spring ищет бины, аннотированные @Transactional (из-за наличия <tx:annotation-driven/>
в моем файле config.xml), он ищет их в контексте приложения.И, основываясь на моем конфиге, который был опубликован в моем предыдущем потоке, в моем приложении не загружаются бины ... все они находятся в контексте сервлета.Поэтому, когда мой сервлет вызывал бины, аннотированные @Service & @Transactional, использовал бины, которые не были обернуты прокси транзакций .Таким образом, нет транзакций.Хитрость (вернее, правильный путь) состояла в том, чтобы изменить мои конфигурационные файлы следующим образом:
myServlet.xml
<context:annotation-config />
<context:component-scan base-package="com.myDomain.servlets" />
config.xml
<context:annotation-config />
<context:component-scan base-package="com.myDomain.dao" />
<context:component-scan base-package="com.myDomain.services" />
Эта конфигурация гарантирует, что все Контроллеры существуют в контексте сервлета, а Транзакционные Сервисы и Репозитории существуют в контексте приложения, , к которому они относятся .И наконец, после многих бессонных ночей мои записи в базу данных продолжаются.