gpt4 book ai didi

jersey - 无法将 ResourceInfo 注入(inject) ContainerRequestFilter

转载 作者:行者123 更新时间:2023-12-01 23:37:44 26 4
gpt4 key购买 nike

我正在尝试实现一个 ContainerRequestFilter 来检查一些东西。最终,它将验证一个 token ,但我还没有做到这一点。该过滤器在 Grizzly HTTP 服务器 (Grizzly 2.3.4) 上运行,并位于 JAX-RS 资源 (Jersey 2.0) 前面。我也在使用Guice 3.0。

当我尝试将 javax.ws.rs.container.ResourceInfo 注入(inject)过滤器时,它为 null。

import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ResourceInfo;
import javax.ws.rs.core.Context;
import java.io.IOException;

public class MyRequestFilter implements ContainerRequestFilter {

@Context
private ResourceInfo resourceInfo;

public void filter(ContainerRequestContext containerRequestContext) throws IOException {

String method = containerRequestContext.getMethod();
System.out.println("method = " + method);

if("OPTIONS".equals(method)) return;

System.out.println("DO SECURITY");
}
}

将请求注入(inject) JAX-RS 资源,注入(inject)成功,我可以使用它。

我做错了什么?

最佳答案

要在ContainerRequestFilter中启用注入(inject),您必须将其注释为@Provider,然后它才能工作

@Provider
public class MyRequestFilter implements ContainerRequestFilter {

@Context
private ResourceInfo resourceInfo;

...
}

关于jersey - 无法将 ResourceInfo 注入(inject) ContainerRequestFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com