带有可选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 楼答案
我认为你需要改变调用服务的方式。它不需要HttpRequest,而是需要传递真正需要的数据
在创建作业时,需要存储要传递给服务的数据,如果作业是通过Http调用创建的,则需要在创建作业时从Http请求获取数据