我想要进行一系列处理元素并通过Guice将它们连接在一起。让我们假设以下路径:Guice辅助注入深入依赖层次结构
interface A
通过class AImpl
实施需要一定的输入interface B
通过class BImpl
需求A
interface C
通过class CImpl
需求B
interface D
通过class DImpl
需求C
A的依赖关系只能在运行时解析,而不能在配置时解析。通常的方法是使用辅助注塑在这种情况下,建立一个工厂,这需要缺少的实例作为参数,就像这样:
public interface AFactory {
public A createA(String input);
}
但我真正想要的是这样的:
public interface DFactory {
public D createD(String inputForA);
}
我不想在整个层次结构中手动传递AImpl
特定的依赖关系。 Guice可以做到这一点吗?如果不是,那么优雅地避开这个问题的最好方法是什么,同时还能保留注射的好处?
我记得我的同意,怎么一回事,因为这种“注入尝试为A,B ,C和d将失败PipelineRunner之外缺乏一个@PipelineInput字符串”这不行的,因为吉斯在配置时验证喷油器,一旦检测到有不满意的结合失败,这就是为什么你不能创建一个几乎完整的注射器,将由其子女完成。专用模块通过使用专用绑定器来克服这一点。 – orsg 2013-05-02 23:23:15
我的错误;您必须将A,B,C和D与常数相邻。尽管如此,微不足道的修复。答案已更新。 – 2013-05-03 00:06:18
好了,所以我必须是绑定的有关该管道的专用注射器孩子和家长注射器只知道工厂(“PipelineRunner”)内的一切。 – orsg 2013-05-03 12:48:49