方法ContainerRequestContext #setProperty存储与其同步的值HttpServletRequest.因此,使用普通的JAX-RS,您可以存储如下属性:
@Provider
public class SomeFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
requestContext.setProperty("someProperty", "someValue");
}
}
Run Code Online (Sandbox Code Playgroud)
之后您可以在资源类中获取它:
@GET
public Response someMethod(@Context org.jboss.resteasy.spi.HttpRequest request) {
return Response.ok(request.getAttribute("someProperty")).build();
}
Run Code Online (Sandbox Code Playgroud)
使用CDI,您还可以在过滤器和资源类中注入任何bean:
@Provider
public class SomeFilter implements ContainerRequestFilter {
@Inject
private SomeBean someBean;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
someBean.setFoo("bar");
}
}
Run Code Online (Sandbox Code Playgroud)
在您的资源类中:
@Inject
private SomeBean someBean;
@GET
public Response someMethod() {
return Response.ok(someBean.getFoo()).build();
}
Run Code Online (Sandbox Code Playgroud)
我希望与Guice一起工作.
更新:正如@bakil指出的那样,@RequestScoped如果要传递的对象只应与当前请求关联,则应使用bean.
| 归档时间: |
|
| 查看次数: |
4185 次 |
| 最近记录: |