所以,根据我的测试,如果你有这样的:如何使用Guice模块重写来减去绑定?
Module modA = new AbstractModule() {
public void configure() {
bind(A.class).to(AImpl.class);
bind(C.class).to(ACImpl.class);
bind(E.class).to(EImpl.class);
}
}
Module modB = New AbstractModule() {
public void configure() {
bind(A.class).to(C.class);
bind(D.class).to(DImpl.class);
}
}
Guice.createInjector(Modules.overrides(modA, modB)); // gives me binding for A, C, E AND D with A overridden to A->C.
但是,如果你想要删除在商业方法作为E的结合?我似乎无法找到一种方法来做到这一点,而不必将E的绑定分解为单独的模块。有没有办法?
只是一个愚蠢的想法,也许是的,但你尝试绑定(E.class使用)。为了(E.class使用)? (你甚至可以将接口绑定到另一个接口吗?) – 2010-05-18 04:37:03
是的,只要绑定的终点指向具体的类或提供者,就可以无限期地绑定1绑定到另一个绑定。至于绑定(E.class).to(E.class),我提出了一个关于这个3年前的bug,它将在2.1中出现。 http://code.google.com/p/google-guice/issues/detail?id=171 – 2010-05-18 05:27:52