Jersey依赖项注入不起作用



我正试图向我的Rest服务控制器注入一个依赖项,该控制器使用Jersey来实现,
这是我的控制器

@Path("service")
public class ServiceProviderController {
 @Inject
 private ServiceProviderService prov;
 public ServiceProviderController(){}
 @GET
 @Produces(MediaType.APPLICATION_JSON)
 Public ServiceProviders testService(@QueryParam("name") String name) {
    prov.getName(name);
    return name;
 }

这是活页夹类

   import org.glassfish.hk2.utilities.binding.AbstractBinder;
   import com.api.controller.ServiceProviderController;
   import com.api.service.ServiceProviderService;
    public class APIBinder extends AbstractBinder {
    @Override
    protected void configure() {   
      bindAsContract(ServiceProviderService.class).to(ServiceProviderController.class);
    } }

这是应用程序类

import org.glassfish.jersey.server.ResourceConfig;
public class MyApplication extends ResourceConfig {
    public MyApplication(){
        register(new APIBinder());
        packages(true, "com.api.service");
    }
}

我从这样的主要方法调用它

MyApplication app = new MyApplication();

错误为

org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=ServiceProviderService,parent=ServiceProviderController,qualifiers={},position=-1,optional=false,self=false,unqualified=null,912348460)

请帮我解决这个问题,

非常感谢

Ero

添加了一个工厂实现,仍然没有得到修复相同的错误弹出

    public class APIBinder extends AbstractBinder implements Factory<ServiceProviderService> {
    @Override
    protected void configure() {
        // TODO Auto-generated method stub
        bindFactory(this).to(ServiceProviderService.class);
    }
    public ServiceProviderService provide() {
        ServiceProviderService sp= new ServiceProviderService();
        return sp;
    }
    public void dispose(ServiceProviderService instance) {
        // TODO Auto-generated method stub
    }
}

您可以创建一个工厂。有关说明,请参阅此线程。

如何配置HK2以注入由工厂方法创建的对象?

最新更新