javajersey+Spring注入servlet请求
我正在启动Grizzly服务器,如下所示:
URI baseUri = UriBuilder.fromUri("http://localhost/").port(9998).build();
ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.packages("com.example");
resourceConfig.property("contextConfig", applicationContext);
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(baseUri, resourceConfig, false);
server.start();
在包com中。例如,我有如下过滤器:
@Component
@Provider
@Priority(0)
public class MyFilter implements ContainerRequestFilter {
@Context
private HttpServletRequest httpServletRequest;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
/* httpServletRequest is null here */
}
}
我的过滤器按照Spring的预期实例化。而且,JAX-RS检测到它并使用Spring实例化的相同实例。我正在尝试访问底层HttpServletRequest
,但找不到如何访问
我知道servlet请求永远不会被注入,直到过滤器实例被创建为代理,因为servlet请求是请求范围。我试图用@RequestScope
注释过滤器,同样的事情
# 1 楼答案
您需要使用来自的GrizzlyWebContainerFactory
如果您想创建servlet容器。目前,您没有创建servlet容器,因此没有可用的
HttpServletRequest
你可以这样做