Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中使用请求范围?_Java_Spring_Spring Web - Fatal编程技术网

Java 如何在Spring中使用请求范围?

Java 如何在Spring中使用请求范围?,java,spring,spring-web,Java,Spring,Spring Web,我想将UriInfo包装到我的自定义查询对象中,并使其在其他Spring组件中可用。我可以用HK2这样做 package test.service; @Path("/test") public class TestResource { @Inject private Query query; @GET public String test() { return "found: " + query.toString(); } } 有合

我想将
UriInfo
包装到我的自定义查询对象中,并使其在其他
Spring
组件中可用。我可以用HK2这样做

package test.service;

@Path("/test")
public class TestResource {

    @Inject
    private Query query;

    @GET
    public String test() {
        return "found: " + query.toString();
    }
}
有合适的工厂

更新web.xml

并向QueryFactory添加
注释

@Component
@Scope("request")
public class QueryFactory implements FactoryBean<Query>
您是指实际web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际上是在web请求中操作,并且仍然收到此消息,那么您的代码可能是在外部运行的

DispatcherServlet/DispatcherPortlet:

在这种情况下,使用RequestContextListener或RequestContextFilter公开当前请求

可笑的是,我已经将RequestContextListener添加到web.xml中了

若运行时未设置ContextLoaderListener,则会在TestResource中获得NullPointerException,因为查询为null


我看不出有什么不对。你能告诉我这个配置应该如何正确完成吗?

问题是你告诉Spring QueryFactory有一个请求范围

@Component
@Scope("request")
public class QueryFactory

这样,ObjEC只存在于Web请求的中间。但是您试图在web请求之外使用它

@Autowired
QueryFactory queryFactory;
您可以在异常中看到它

您指的是实际web之外的请求属性吗 请求


我得到异常,因为没有UriInfo。我想要这个东西。UriInfo不是我的类,但可用于web应用程序。您正在将QueryFactory注入SpringConfiguration类。此配置类在应用程序开始时初始化,它不是web请求的一部分。
package test.service;

@Path("/test")
@Component
public class TestResource {

    @Autowired
    private Query query;

    @GET
    public String test() {
        return "found: " + query.toString();
    }
}
@Component
@Scope("request")
public class QueryFactory implements FactoryBean<Query>
`java.lang.IllegalStateException: No thread-bound request found:` 
@Component
@Scope("request")
public class QueryFactory
@Autowired
QueryFactory queryFactory;