如何将对象注入jersey请求上下文?

阿明

在这种情况下,我想编写一个过滤器,并希望该过滤器将一些对象插入当前请求中并将其传递,以便在资源类获得请求时可以使用该对象。

过滤等级

@Override
public void filter(ContainerRequestContext request) throws IOException {
    MyObject obj = new MyObject();
    // Inject MyObject to request which I dont know how
}

资源类别

@PUT @Consumes("application/json")
@Path("/")
public String create(
        JSONParam sample,
        @Context MyObject obj) {

    System.out.println(obj.getName());

    return "";
}
保罗·萨姆索塔

您可以使用ContainterRequestContext.setProperty(String, Object)然后只需注入ContainerRequestContext

@Override
public void filter(ContainerRequestContext crc) throws IOException {
    MyObject obj = new MyObject();
    crc.setProperty("myObject", myObject);
}

@POST
public Response getResponse(@Context ContainerRequestContext crc) {
    return Response.ok(crc.getProperty("myObject")).build();
}

MyObject直接注入的另一种选择是使用HK2功能Jersey 2提供的功能。

创建一个工厂,注入ContainerRequestContext并返回MyObject例如

import javax.inject.Inject;
import javax.ws.rs.container.ContainerRequestContext;
import jetty.plugin.test.domain.MyObject;
import org.glassfish.hk2.api.Factory;

public class MyObjectFactory implements Factory<MyObject> {
    
    private final ContainerRequestContext context;
    
    @Inject
    public MyObjectFactory(ContainerRequestContext context) {
        this.context = context;
    }

    @Override
    public MyObject provide() {
        return (MyObject)context.getProperty("myObject");
    }

    @Override
    public void dispose(MyObject t) {}  
}

然后,您需要绑定工厂:

public class InjectApplication extends ResourceConfig {
    
    public InjectApplication() {
        ...
        register(new AbstractBinder(){
            @Override
            protected void configure() {
                bindFactory(MyObjectFactory.class)
                        .to(MyObject.class)
                        .in(RequestScoped.class);
            } 
        });
    }
}

随着财产如上面的例子过滤器相同的设置,则可以只注射MyObject@Context

@GET
public Response getTest(@Context MyObject myObject) {
    return Response.ok(myObject.getMessage()).build();
}


更新

有关实现的问题,请参见此问题

也可以看看:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Glassfish 4.0.1上的Jersey 2.4:如何将上下文HttpServletRequest注入ContainerRequestFilter?

来自分类Dev

如何将自定义上下文绑定到Jersey请求

来自分类Dev

如何将对象上下文传递给Java中的回调接口

来自分类Dev

如何将对象上下文传递给Java中的回调接口

来自分类Dev

如何将对象的当前状态保存到Servlet的上下文路径或从Servlet的上下文路径获取对象的当前状态

来自分类Dev

如何从测试中注入上下文

来自分类Dev

在树枝模板中将对象渲染为上下文

来自分类Dev

如何将对象设置为上下文,以便我可以使用@Context在应用程序中的任何位置获取它

来自分类Dev

如何将JavaScript框架注入ChakraBridge上下文中?

来自分类Dev

如何将JavaScript框架注入ChakraBridge上下文中?

来自分类Dev

使用Hilt注入上下文:此字段泄漏上下文对象

来自分类Dev

Kotlin对象中的Dagger 2注入上下文

来自分类Dev

Specflow上下文注入

来自分类Dev

Django:如何将上下文提供给FormView get()方法(也使用请求参数)

来自分类Dev

如何通过接收器调整给定请求对象的模板上下文?

来自分类Dev

如何将对象注入WCF的IErrorHandler?

来自分类Dev

PlayFramework如何将对象注入模板

来自分类Dev

如何在Spring上下文中注入模拟

来自分类Dev

如何将面板的数据上下文绑定到XAML中的父对象?

来自分类Dev

如何将上下文对象传递给NSValueTransformer

来自分类Dev

Javascript:如何根据上下文对象的旋转来移动上下文对象

来自分类Dev

传入请求的上下文

来自分类Dev

如何将Owin上下文传递给正在注入Api控制器的Repo

来自分类Dev

将上下文注入到类似于Jersey InjectableProvider的Spring MVC控制器中

来自分类Dev

如何获取请求上下文用户名

来自分类Dev

如何将巨无霸置于菜单上下文下方?

来自分类Dev

如何将IDbConnection传递给EF上下文?

来自分类Dev

如何将函数作为上下文参数传递?

来自分类Dev

如何将上下文发送到 BroadcastReceiver?

Related 相关文章

  1. 1

    Glassfish 4.0.1上的Jersey 2.4:如何将上下文HttpServletRequest注入ContainerRequestFilter?

  2. 2

    如何将自定义上下文绑定到Jersey请求

  3. 3

    如何将对象上下文传递给Java中的回调接口

  4. 4

    如何将对象上下文传递给Java中的回调接口

  5. 5

    如何将对象的当前状态保存到Servlet的上下文路径或从Servlet的上下文路径获取对象的当前状态

  6. 6

    如何从测试中注入上下文

  7. 7

    在树枝模板中将对象渲染为上下文

  8. 8

    如何将对象设置为上下文,以便我可以使用@Context在应用程序中的任何位置获取它

  9. 9

    如何将JavaScript框架注入ChakraBridge上下文中?

  10. 10

    如何将JavaScript框架注入ChakraBridge上下文中?

  11. 11

    使用Hilt注入上下文:此字段泄漏上下文对象

  12. 12

    Kotlin对象中的Dagger 2注入上下文

  13. 13

    Specflow上下文注入

  14. 14

    Django:如何将上下文提供给FormView get()方法(也使用请求参数)

  15. 15

    如何通过接收器调整给定请求对象的模板上下文?

  16. 16

    如何将对象注入WCF的IErrorHandler?

  17. 17

    PlayFramework如何将对象注入模板

  18. 18

    如何在Spring上下文中注入模拟

  19. 19

    如何将面板的数据上下文绑定到XAML中的父对象?

  20. 20

    如何将上下文对象传递给NSValueTransformer

  21. 21

    Javascript:如何根据上下文对象的旋转来移动上下文对象

  22. 22

    传入请求的上下文

  23. 23

    如何将Owin上下文传递给正在注入Api控制器的Repo

  24. 24

    将上下文注入到类似于Jersey InjectableProvider的Spring MVC控制器中

  25. 25

    如何获取请求上下文用户名

  26. 26

    如何将巨无霸置于菜单上下文下方?

  27. 27

    如何将IDbConnection传递给EF上下文?

  28. 28

    如何将函数作为上下文参数传递?

  29. 29

    如何将上下文发送到 BroadcastReceiver?

热门标签

归档