java - 如何在 Guice 4.0 中注入(inject)实现

标签 java binding polymorphism guice dropwizard

我的类(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/

相关文章:

binding - AngularJS如何绑定(bind) map

java - Child[] 无法传递给接受 Parent[] 的方法。为什么?

java - 从动态模型生成 View

Java继承根据对象类型获取子类的所有方法

java - 如何使用 do while 循环

c# - Xamarin - 现在已过时的 ParentView 的替代方案

c# - 返回一个包含泛型列表的类

java - java中的字符串比较不匹配

java - 从 Eclipse 迁移到 IntelliJ

多变量初始化中使用的绑定(bind)运算符仅在变量也在同一行中声明时才有效