【发布时间】:2021-05-06 17:04:03
【问题描述】:
在我的 Spring Boot 应用程序中,我有一个每隔一小时执行一次的调度程序任务。在尝试访问请求范围 bean 的调度程序方法中。总是得到异常 org.springframework.beans.factory.BeanCreationException。
这是代码示例。
@Data
public class TestVo {
private String message = "Hello";
}
@Bean
@Scope(value="request", proxyMode=ScopedProxyMode.TARGET_CLASS)
public TestVo testVo() {
return new TestVo();
}
如下在调度器方法中访问上面创建的bean,
@Autowired
private TestVo testVo;
@Scheduled(cron="0 0 * * * *")
public void greetings() {
System.out.println(testVo.getMessage()); // accessing request scope bean
}
使用上面的代码得到以下异常,
org.springframework.beans.factory.BeanCreationException: 错误 创建名为“scopedTarget.scheduledJobTaskExecutor”的bean:范围 'request' 对当前线程无效;考虑定义一个 如果您打算从 单身人士;嵌套异常是 java.lang.IllegalStateException: No 找到线程绑定请求:您指的是请求属性吗 在实际 Web 请求之外,或在 最初的接收线程?如果您实际上是在 一个网络请求,仍然收到此消息,您的代码可能是 在 DispatcherServlet 之外运行:在这种情况下,使用 RequestContextListener 或 RequestContextFilter 暴露当前 请求。
会有帮助..谢谢。
【问题讨论】:
标签: java spring spring-boot taskscheduler requestscope