Dependency injection 向Pico容器注册实现列表
我有一个接口Dependency injection 向Pico容器注册实现列表,dependency-injection,java-8,picocontainer,Dependency Injection,Java 8,Picocontainer,我有一个接口 public interface IInterface{} 我有一个这个接口的实现列表: public class MyClass1 implements IInterface{} public class MyClass2 implements IInterface{} 我想用Pico容器做什么: 注册IInterface的所有实现,以便能够将其解析为列表: public class MyTest { public MyTest(IInterface[] list){
public interface IInterface{}
我有一个这个接口的实现列表:
public class MyClass1 implements IInterface{}
public class MyClass2 implements IInterface{}
我想用Pico容器做什么:
public class MyTest {
public MyTest(IInterface[] list){}
}
container.addComponent(IInterface.class, MyClass1.class, "name1");
container.addComponent(IInterface.class, MyClass2.class, "name2");
能够做以下事情:
container.getComponent(IInterface.class, "name2");
container.addComponent(MyClass1.class);
container.addComponent(MyClass2.class);
container.addComponent(MyTest.class);
MyTest test = container.getComponent(MyTest.class);
这将注入一个包含所有实现的数组。但这种行为是非常不清楚和不直观的。对我来说,最好注册配对。第一部分的工作原理与您描述的完全相同。只需以通常的方式注册任意数量的实现,就可以将它们作为一个数组(不需要任何注入参数)或。您可以在//ServerRegistrar,AppPico中看到数组示例
对于第二部分,有几个内置的解决方案,例如使用命名注释(就像在Guice中一样),我个人不赞成。或使用(接近您的期望)。或者使用一些我可以详细解释的自定义方法。但我如何注册实现列表?还是一个接一个地注册?