我的类(class)如下,效果很好
@Singleton
public class EmpResource {
private EmpService empService;
@Inject
public EmpResource(EmpService empService) {
this.empService=empService;
}
}
public class EmpService {
public void getName(){..}
}
现在,我必须创建一个接口(interface),然后 EmpService 实现该接口(interface),而不是直接使用 EmpService,如下所示。
public interface IEmpService{
void getName();
}
public class EmpServiceImpl implements IEmpService {
public void getName(){...}
}
所以现在我的资源类必须使用该接口(interface),但我不确定如何引用它必须使用的实现。
@Singleton
public class EmpResource {
private IEmpService empService;
@Inject
public EmpResource(IEmpService empService) {
this.empService=empService;
}
}
我见过this我不确定我的绑定(bind)应该放在哪里。 (这是我第一个与 Guice 相关的项目,所以我完全是新手)。
这是出现的错误“没有绑定(bind) com.api.EmpService 的实现。”这是完全可以理解的,但不确定如何修复它。 我感谢你的帮助。
仅供引用:我正在使用 Dropwizard 应用程序。
最佳答案
您可以像这样配置您的模块:
public class YourModule extends AbstractModule {
@Override
protected void configure() {
bind(EmpService.class).to(EmpServiceImpl.class);
// ....
}
}
关于java - 如何在 Guice 4.0 中注入(inject)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898241/