我有一个代表图形组件的类。该组件显示数据库中的数据。
现在我有一些仪表板,其上面有12个我的组件。当然我想重用这个组件!所以我想,我可以使用带参数的自定义注释并将参数传递给提供者。我在Stackoverflow上发现了一些黑客攻击(http://stackoverflow.com/questions/5704918/custom-guice-binding-annot ...)但说实话,我没有找到任何文档如何为我的自定义接口实现AnnotationImpl
我不认为,AssistedInject是我在这里需要的,因为我不喜欢通过AssistedInjection将12x相同的类注入我的构造函数。
对我而言,No-Go是编写一个Interface和12个实现类,仅用于一个不同的参数。
有人对我的问题有所了解吗?
答案 0 :(得分:4)
我不清楚你要做什么,但我认为辅助注射可能适合你。你能不创建一个ComponentFactory然后,在它的create方法中,指定你需要的这个参数?您甚至不需要创建Factory的具体实现,因为Guice会为您执行此操作,您可以像这样指定它:
install(new FactoryModuleBuilder().build(ComponentFactory.class));
ComponentFactory看起来像这样:
public interface ComponentFactory {
Component create(ParameterType parameter);
}
组件本身就像这样:
public class Component {
@Inject
public WebClient(@Assisted ParameterType parameter, OtherService service) {
// etc...
}
}
然后将ComponentFactory传递给您的仪表板,它可以(轻松地)创建它想要的任何组件。