有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想创建一个Springbean,它可能依赖于HTTP请求。以下是代码:

@Bean
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public MyBean getMyBean(Optional<HttpServletRequest> request) {
    if(request.isPresent()){
        return new MyBean(request);
    } else {
        return new MyBean();
    }
}

问题是,当没有可用的请求时(例如,当它想要将其注入石英触发的作业时),Spring会抛出“找不到线程绑定的请求”

我也试过写一些类似的东西

public MyBean getMyBean(ApplicationContext ctx){

但是我还没有找到从ApplicationContext获取HTTP请求的方法

有没有办法让一个工厂在没有请求的情况下工作,但在有请求的情况下注入请求


共 (1) 个答案

  1. # 1 楼答案

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

    在创建作业时,需要存储要传递给服务的数据,如果作业是通过Http调用创建的,则需要在创建作业时从Http请求获取数据