当前位置: 首页 > 知识库问答 >
问题:

使用Spring boot在侦听器中调用用@RequestScope注释的类

乔鸿骞
2023-03-14

org.springframework.beans.factory.beanCreationException:创建名为“ScopedTarget.MovimentAcaoEntradaradarnotabuilderImpl”的bean时出错:当前线程的范围“request”不活动;如果您打算从单个对象引用这个bean,请考虑为它定义一个限定作用域的代理;嵌套异常是java.lang.IllegalStateException:没有找到线程绑定请求:您是在实际web请求之外引用请求属性,还是在最初接收线程之外处理请求?如果您实际上在web请求中操作,并且仍然接收到此消息,那么您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,使用RequestContextListener或RequestContextFilter公开当前请求。

@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();
    }
}

共有1个答案

苗阳文
2023-03-14

根据(springs文档),“请求”、“会话”和“全局会话”这三个作用域只有在存在Web感知的应用程序上下文时才有可能:

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文档的指导来解决您的问题。

 类似资料:
  • 我试图在我的基于微服务的Spring启动应用程序中实现普罗米修斯,部署在weblogic服务器上。作为POC的一部分,我已经将配置作为一场战争的一部分。为了启用它,我在下面设置了配置- 应用属性 格拉德尔- 但执行器请求被现有的拦截器阻止。它要求在特定于我们项目的标题中传递值。通过postman(http:localhost:8080/abc/activator/prometheus),我可以测试

  • 我有一个JPanel,我的(游戏)程序在其中绘制了一些由一段代码决定的东西。到目前为止,一切都很好。我写了一个非常基本的侦听器,它侦听程序背景模型的变化,然后应该告诉GUI更新,即移动游戏外观。 所有这些都发生在mouseListener触发的方法中。 我猜这就是问题所在,因为在JPanel中再次单击鼠标会正确更新JPanel,我可以看到模型移动的部分。 JPanel的代码: 更新调用了很多AWT

  • 我正在为maven多模块项目研究缓存实现(exstremescale),我在下面添加了maven依赖项 添加了缓存注释 cache-manager.xml 缓存只适用于项目的一个maven模块,我可以看到缓存拦截器调用,对于maven模块的其余部分,它忽略了@cacheable注释(它不会进入拦截器)。 我们没有PostConstructor或自我调用 我们使用atomikos作为事务管理器和CX

  • 我对@Async和Rest模板调用有问题;下面是我的主要应用程序类,带有一个任务执行器Bean和EnableAsync注释 这是我在Rest控制器中调用的带有异步注释的my测试服务: 此服务在rest模板上返回一个nullPointer;这是stacktrace 但是如果我删除@enableAsync和@Async,那么简单的Rest模板可以很好地工作。 当我传递HttpServlet请求时,Ec

  • 问题内容: 我在互相嵌套时想调用侦听器时遇到问题。我也尝试过,但是遇到了同样的问题。 为了演示问题,我将代码简化为问题。有两个按钮,第一个位于第一个ui:repeat内部,将成功的调用为简单的侦听器。第二个按钮位于嵌套的ui:repeat元素内部,应调用与第一个按钮相同的侦听器,但永远不会调用该侦听器。 你能告诉我这怎么了吗? 问题答案: 这是一个已知的Mojarra问题,涉及到的中断状态管理。特

  • 我目前正在为一个包含大量模块的大项目创建TestNG测试用例。现有的大多数单元测试实际上都是集成测试,因为它们非常依赖于/opt文件夹中的配置文件以及正在运行的数据库和消息队列。 为了使事情进一步复杂化,测试用例使用配置位于resources/meta-inf/services/org.TestNG.itestnglistener文件中的TestNG侦听器。这个文件中的侦听器触发所有测试用例(正如