相关疑难解决方法(0)

泽西HK2依赖注射

我正在编写一个公开REST API的简单微服务.所以我开始与泽西岛合作,当然我需要将我的对象注入球衣资源.基本上我有2个类定义了一组资源,其中一些需要使用另一个服务.

基本上我有:

public interface MyService {

String getServiceName();

void doService();
Run Code Online (Sandbox Code Playgroud)

}

此接口的2个实现(MyServiceBean和MyAlternativeServiceBean)

而且,据我所知阅读球衣文件,我定义了一个hk2 Binder:

public class MyBinder implements Binder{

@Override
public void bind(DynamicConfiguration config) {

    DescriptorImpl descriptor = BuilderHelper.link(MyServiceBean.class).named("MyServiceBean").to(MyService.class).build();
    config.bind(descriptor);


    config.bind(BuilderHelper.link(MyAlternativeServiceBean.class).named("MyAlternativeServiceBean").to(MyService.class).build());

}
Run Code Online (Sandbox Code Playgroud)

我将此绑定程序注册到ApplicationConfig类

public class ApplicationConfig extends ResourceConfig{

public ApplicationConfig(){
    property("property.value", "MyAlternativeServiceImplementation");
    registerInstances(new MyBinder());
}
Run Code Online (Sandbox Code Playgroud)

}

并正确注释到资源中

@Path("first")
    public class First {

        @Inject @Named(value = "MyServiceBean")
        private MyService myService;
    //...
    }

    @Path("second")
    public class Second {

        @Inject @Named(value = "MyAlternativeServiceBean")
        private MyService myService;
    //...
    }
Run Code Online (Sandbox Code Playgroud)

一直有效,直到MyService实现没有args构造函数.但在一种情况下,我还需要为MyAlternativeServiceBean提供依赖.

这是构造函数

@Inject @Named("property.value") …
Run Code Online (Sandbox Code Playgroud)

java rest dependency-injection jersey-2.0 hk2

2
推荐指数
1
解决办法
4781
查看次数

标签 统计

dependency-injection ×1

hk2 ×1

java ×1

jersey-2.0 ×1

rest ×1