После более 3 часов изучения кода и изменения XML-определений bean-компонентов Spring я наконец нашел проблему.Это можно найти в этой части stacktrace, которую я заметил после нахождения решения:
at org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor.postProcessAfterInitialization(AsyncAnnotationBeanPostProcessor.java:126)
На основании примечания здесь я изменил все атрибуты proxy-target-class на falseв <aop:config>
, <aop:aspectj-autoproxy>
и <tx:annotation-driven>
, но безуспешно.
Затем я начал удалять части своего определения XML, чтобы найти, какая из них решает эту проблему.Комментирование <task:annotation-driven>
помогло, и проблема решена.Затем я увидел, что у этого элемента есть атрибут mode
, который я не указал, поэтому используется его значение по умолчанию proxy
, и поэтому требуется CGLIB.Когда я изменил mode="aspectj"
, проблема решилась:
<task:annotation-driven scheduler="dataProviderScheduler" executor="dataProviderExecutor" mode="aspectj" />