Spring bean工厂带有可选的HTTP请求

时间:2015-11-27 14:02:20

标签: java spring dependency-injection

我想创建一个可能依赖于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请求的方法。

有什么方法可以让工厂在没有请求的情况下工作,但如果有请求会注入请求吗?

1 个答案:

答案 0 :(得分:0)

我认为你需要改变调用服务的方式。它不需要HttpRequest,而是需要传递您真正需要的数据。

在您创建作业时,您需要存储要传递给服务的数据,如果您的作业是从Http调用创建的,那么您需要在创建的那一刻从Http请求中获取数据工作。