java-将多个接口自动绑定到Guice中的一个impl

我有一个如下所示的设计,其中一个接口扩展了多个父接口,并且该接口的一种实现.

在我的客户端类中,我只想依赖一个或多个父接口,而不是ZooKeeperClient.我觉得这是一个更好的设计,因为它减少了我的客户端类的依存关系的表面积,并且还使得在测试中模拟事物更容易.

例如

@Inject
public Foo(ServiceUpdater su) {
    // ...
}

但是,为了实现这一点,我需要手动将每个接口的绑定添加到实现类:

bind(ServiceCreator.class).to(ZooKeeperClientImpl.class)
bind(ServiceDeleter.class).to(ZooKeeperClientImpl.class)
bind(ServiceUpdater.class).to(ZooKeeperClientImpl.class)
// ...
bind(ZooKeeperClient.class).to(ZooKeeperClientImpl.class)

有什么办法可以避免这种重复并告诉Guice立即绑定整个层次结构?就像是…

bind(ZooKeeperClient.class/* and its parents*/).to(ZooKeeperClient.class)

如果没有,这里的设计有问题吗?我在做一些不吉利的事情吗?

解决方法:

Guice中没有这种方法,您可以使用ClassUtils.getAllInterfaces()之类的实用程序遍历所有接口并将其绑定.

上一篇:Google Guice之牛刀小试


下一篇:使用内置的Guice Injection注释静态java.util.Logger实例的正确习惯是什么?