Rest Jersey依赖项注入不起作用
我正在尝试向我的Rest服务控制器注入依赖项,该控制器使用Jersey实现,Rest Jersey依赖项注入不起作用,rest,dependency-injection,jersey,jersey-2.0,hk2,Rest,Dependency Injection,Jersey,Jersey 2.0,Hk2,我正在尝试向我的Rest服务控制器注入依赖项,该控制器使用Jersey实现, 这是我的控制器 @Path("service") public class ServiceProviderController { @Inject private ServiceProviderService prov; public ServiceProviderController(){} @GET @Produces(MediaType.APPLICATION_JSON) Public Servi
这是我的控制器
@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)
请帮我把这个修好
非常感谢
能源监管局
添加了一个工厂实现,仍然没有得到修复相同的错误弹出
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
}
}
公共类APIBinder扩展AbstractBinder实现工厂{
@凌驾
受保护的void configure(){
//TODO自动生成的方法存根
bindFactory(this.to)(ServiceProviderService.class);
}
公共服务提供者服务提供者(){
ServiceProviderService sp=新的ServiceProviderService();
返回sp;
}
public void dispose(ServiceProviderService实例){
//TODO自动生成的方法存根
}
}
您可以创建工厂。请参阅此线程以获取解释
将
删除到(ServiceProviderController.class)代码>已删除仍不可用您是否有任何web.xml配置?只是想知道你的MyApplication
类是否被使用。你能确认吗?不,我正在用Grizzly服务器运行应用程序,所以有一个主要的启动方法,在它里面我放置了“MyApplication app=new MyApplication()”对象创建添加工厂实现,如上所述,但仍然没有得到修复。发生了相同的错误