我有一个很棒的spring mvc app。 我有一个bean X,它有以下声明
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
我需要创建一个后台cron作业。 我在我的新bean中添加了一个threadPool和@Scheduled注释,它使用了依赖bean bean。
当我的cron任务由Spring启动时,我得到了这个例外:
org.springframework.beans.factory.BeanCreationException:创建名称为' scopedTarget.X':范围'请求'当前线程不活动;考虑为这个bean定义一个范围代理,如果你想从一个单例引用它;嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际上是在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet / DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求。
我知道我的bean X只会被DispatcherServlet注入。
我的问题是如何解决这个问题?