我有这样的课程,如下工作正常
@Singleton
public class EmpResource {
private EmpService empService;
@Inject
public EmpResource(EmpService empService) {
this.empService=empService;
}
}
public class EmpService {
public void getName(){..}
}
现在我不得不直接使用EmpService,而是创建一个接口,EmpService实现该接口如下。
public interface IEmpService{
void getName();
}
public class EmpServiceImpl implements IEmpService {
public void getName(){...}
}
所以现在我的资源类必须使用该接口,但我不知道如何引用它必须使用的实现。
@Singleton
public class EmpResource {
private IEmpService empService;
@Inject
public EmpResource(IEmpService empService) {
this.empService=empService;
}
}
我见过this,我不确定绑定应该去哪里。 (这是我与Guice有关的第一个项目,所以我是一个新手)。
这是出现的错误“com.api.EmpService没有实现绑定。”这完全可以理解但不确定如何修复它。 我知道你的帮助。
仅供参考:我正在使用Dropwizard应用程序。
答案 0 :(得分:2)
您可以将模块配置为:
public class YourModule extends AbstractModule {
@Override
protected void configure() {
bind(EmpService.class).to(EmpServiceImpl.class);
// ....
}
}
答案 1 :(得分:0)
您还必须为EmpServiceImpl类添加Provide Methode
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(IEmpService.class).to(EmpServiceImpl.class);
}
@Provides
EmpServiceImpl provideEmpServiceImpl() {
// create your Implementation here ... eg.
return new EmpServiceImpl();
}
}