Вызов класса, аннотированного @RequestScope внутри слушателя, с использованием загрузки Spring

org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем scopedTarget.movimentacaoEntradaRadarNotaBuilderImpl: область «запрос» не активна для текущего потока; рассмотрите возможность определения прокси с ограниченным объемом для этого bean-компонента, если вы собираетесь ссылаться на него из синглтона; вложенное исключение - java.lang.IllegalStateException: запрос с привязкой к потоку не найден: вы имеете в виду атрибуты запроса вне фактического веб-запроса или обрабатываете запрос вне потока, первоначально получавшего его? Если вы действительно работаете с веб-запросом и все еще получаете это сообщение, ваш код, вероятно, работает за пределами DispatcherServlet / DispatcherPortlet: в этом случае используйте RequestContextListener или RequestContextFilter, чтобы раскрыть текущий запрос.

Мне нужно что-то, чтобы решить проблему, не удаляя @RequestScope, и это только для этого случая, а не для всего проекта.

@Component
@RequestScope
public class BuilderImplementation implements BuilderInterface {

    @Override
    public void build(){

    }

}

@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class MovimentacaoEntradaQueueStorageListener {

    private final @NonNull BuilderInterface builderInterface;

    public MessageStatus listen() {

        builderInterface.build();
    }
}


person Airton cruz    schedule 28.12.2019    source источник


Ответы (1)


Согласно (документации по пружинам, три области «запрос», «сеанс» и «глобальный сеанс» возможны, только если существует контекст приложения, поддерживающий веб:

The scopes that are described in the following paragraphs are only 
available if you are using a web-aware Spring ApplicationContext 
implementation (such as XmlWebApplicationContext). If you try using these 
next scopes with regular Spring IoC containers such as the XmlBeanFactory 
or ClassPathXmlApplicationContext, you will get an IllegalStateException 
complaining about an unknown bean scope.

Следуйте инструкциям официальной документации Spring, чтобы решить вашу проблему.

person Heri    schedule 28.12.2019