Это довольно сложная конфигурация, но я подозреваю, что бин loginService
почему-то не проксируется с transactionAdvisor
, хотя я вижу, что вы пытаетесь это сделать.
Попробуйте убедиться, что loginService
, который вводится в контроллер, на самом деле является сгенерированным прокси-объектом, а не необработанным LoginServiceImpl
объектом. Отладчик также будет очень полезен для проверки того, что выполнение кода проходит через TransactionInterceptor
.
Есть ли причина, по которой вы так поступаете? Есть намного более простые способы достижения того же самого, которые не включают создание советников, фабрик авто-прокси, источников атрибутов транзакций и так далее. Например, использование <tx:annotation-driven>
и @Transactional
облегчает эту задачу. Может быть, это потому, что ваш текущий подход означает, что в вашем коде не должно быть ссылок на Spring, это то, что вам понравилось?