当前位置: 首页 > 知识库问答 >
问题:

我是否需要使用一个工厂,以便在泽西岛注入一个简单的对象?

太叔超英
2023-03-14
class Bar {
    @Inject
    Foo field;

    public Foo getField() { return field; }
}
public class Foo implements Factory<Foo> {
    @Override
    public Foo provide() {
        return new Foo();
    }

    @Override
    public void dispose(Foo f) {
    }
}

主配置中的代码:

final ResourceConfig rc = new ResourceConfig()
                .packages("com.example")
                .register(
                        new AbstractBinder() {
                            @Override
                            protected void configure() {
                                bindFactory(new FooFactory()).to(Foo.class).in(Singleton.class);
                            }
                        })

我的问题是...在使用hk2进行依赖注入的Jersey 2.0中,是否可以在不创建工厂类的情况下注入对象

共有1个答案

应嘉容
2023-03-14

可以使用AbstractBinder进行注入绑定,而不使用FactoryInjectionResolver

    register(new AbstractBinder() {
        @Override
        protected void configure() {
            bind(Foo.class).to(Foo.class);
            bind(Bar.class).to(Bar.class);
        }
    });

在本例中,Foo和Bar类具有空的构造函数

public class Bar {
    @Inject
    Foo field;
    public Foo getField() { return field; }
}

public class Foo {}

现在您可以将Bar注入到一个资源或其他hk2 bean中。

 类似资料:
  • 我很难用泽西岛2(2.7)和泽西岛的内置HK2依赖注入来获得一个非常基本的单例类实现。我正在雄猫上运行这个。 我的目标是创建一个支持类的单例实例,供各种web服务方法使用。在构造函数注入、方法注入和注释类成员之间,我没有强烈的偏好(如下所述)。 这是我的单身班: 这是我的应用程序类: 以下是我的Provider/ContextResolver类: web.xml: 我打算在其中注入 JustOne

  • 我正在编写一个公开 REST API 的简单微服务。所以我开始使用泽西岛,当然我需要将我的对象注入球衣资源中。基本上,我有2个类来定义一组资源,其中一些需要使用另一个服务。 所以基本上我有: } 该接口的2种实现(MyServiceBean和My备选ServiceBean) 而且,就我对阅读新泽西文件的理解,我定义了一个hk2活页夹: 我将此活页夹注册到ApplicationConfig类 } 并

  • 我有一个资源类 我尝试了泽西岛2.0的依赖注入中的答案 如果我使用 启动服务器时,我得到 如果我删除了上述依赖项,那么我得到 资源配置类是 活页夹类是 我在嵌入式模式下使用tomcat并添加init参数 我如何在控制器中注入服务?注入是单元测试的首选方式吗(当服务实现调用另一个服务时,比如说XService ),单元测试不应该依赖于Xservice,因此demoServiceImpl如何从测试中将

  • 问题内容: 我当时在看使用Jersey的优秀REST教程。在页面下方,构建了一个Web资源,该资源的标题为它本身包含两个实例变量 我想知道确切地如何初始化实例变量和实例变量?我知道使用注释可以注入信息,但是什么时候发生?泽西岛会自动处理吗? 问题答案: Jersey 不会修改 类,但 会 在客户端的每个请求中 创建 它。 之后 类的构造函数被调用,上下文字段注入。 (如果您尝试访问构造函数中的那些

  • 我试图将资源的实例注入具有Singleton作用域的JAX-RS应用程序,但当我这样做时,我得到: 警告:在服务器运行时中注册的提供程序com.test.jersey.app.MyResource未实现任何适用于服务器运行时的提供程序接口。由于约束配置问题,将忽略提供程序com.test.jersey.app.MyResource。 我有一个如下的应用程序,它需要一个已经运行的MyResource

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?