#spring #kotlin
#spring #kotlin
Вопрос:
У меня есть некоторый код, который использует компоненты в области запроса при вызове функции из сопрограммы. Похоже, spring не знает, что я все еще нахожусь внутри того же запроса.
Возможно ли заставить spring понять, что мне все еще нужен компонент с областью запроса, даже если вызов выполняется из асинхронной сопрограммы Kotlin?
Я получаю это сообщение об ошибке при запуске кода:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'scopedTarget.wsContext':
Scope 'request' is not active for the current thread;
consider defining a scoped proxy for this bean if you intend to refer to it from a singleton;
nested exception is java.lang.IllegalStateException:
No thread-bound request found:
Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread?
If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.
Комментарии:
1. Я не думаю, что это пока возможно. Поддержка совместной процедуры добавляется весной 5.2.
Ответ №1:
Сопрограммы независимы от основного потока, поэтому вам необходимо предоставить все данные в области сопрограмм вручную