Здравствуйте! Наконец-то я нашел решение с помощью коллеги.
Spring может иметь несколько контекстов одновременно.
- Одним из них будет контекст root , а все остальные контексты будут дочерними контекстами.
- Все дочерние контексты могут обращаться к bean-компонентам, определенным в root контексте, но не наоборот.
В моей сети. xml У меня есть два файла конфигурации xml: файл servlet-config. xml и jpaContext. xml, первый из которых используется DispacherServlet, который создает дочерний контекст приложения. второй используется ContextLoaderListener, который создает root прикладной контекст.
У меня был элемент component-scan в дочернем контексте, поэтому компоненты были созданы внутри дочернего контекста. Когда служебный бин пытался начать новую транзакцию с аннотацией, управляемая аннотацией не могла увидеть бин (потому что это было из дочернего контекста), и, таким образом, я получал ошибку.
путем изменения компонента Сканирование в servlet-config. xml для создания только контроллеров:
<context:component-scan base-package="com.example.controllers"/>
и добавление нового компонента сканирования в контекст root (jpaContext. xml)
<context:component-scan base-package="com.example"/>
проблема решена.