我想创建一个可能依赖于HTTP请求的Spring bean。这是代码:
@Bean
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public MyBean getMyBean(Optional<HttpServletRequest> request) {
if(request.isPresent()){
return new MyBean(request);
} else {
return new MyBean();
}
}
问题是,Spring抛出&#34;没有找到线程绑定请求&#34;当没有可用的请求时(例如,当它想要将它注入到Quartz触发的Job中时)。
我也尝试过像
这样的东西public MyBean getMyBean(ApplicationContext ctx){
但我找不到从ApplicationContext
获取HTTP请求的方法。
有什么方法可以让工厂在没有请求的情况下工作,但如果有请求会注入请求吗?
答案 0 :(得分:0)
我认为你需要改变调用服务的方式。它不需要HttpRequest,而是需要传递您真正需要的数据。
在您创建作业时,您需要存储要传递给服务的数据,如果您的作业是从Http调用创建的,那么您需要在创建的那一刻从Http请求中获取数据工作。