有一个类持有一些状态并实现一个接口。此类应在具有不同配置的 GUICE 模块中多次注册。该类对其他 bean 具有依赖关系,这些 bean 应该由 GUICE 注入。例子:
public class MenuItemImpl implements MenuItem {
@Inject
AnyService service;
public MenuItemImpl(String caption) {
this.caption = caption;
}
//...
}
除了使用 c'tor 参数,还可以使用公共设置器。
在 Guice 模块中,我想绑定 MenuItemImpl 类的多个实例。
我尝试使用 a Provider<T>
,但是在这种情况下不注入依赖 bean。
Multibinder<MenuItem> binder = Multibinder.newSetBinder(binder(), MenuItem.class);
binder.addBinding().toProvider( new Provider<MenuItem>() {
@Override
public MenuItem get() {
return new MenuItemImpl("StartCaption");
}
}
我看了一下@Assist 注释。但是,我想在模块的绑定阶段而不是在使用 bean 时指定配置。
我看到的唯一解决方法是为每种配置创建不同的子类,恕我直言,这不是 OO 的本意。