Spring:将某种类型的数组或列表注入bean中

如果我有一个接口I ,以及一些实现它的类,是否可以将一个数组I[]List注入一个bean? 我看到它可以使用List完成,但是我想在这里对我的列表进行参数化 – 无论是那个还是得到一个类型为I的数组。

列表/数组中的元素数量是固定的,并在运行时之前确定。

感谢您提前的任何反馈:-)

我在Spring 3.1中可以将其注入:

 @Inject List list; 

I在哪里你的界面(但它应该是具体的)。

或者您可以使用Spring Java Config( @Configuration )生成( @Bean )命名列表,并使用Qualifier@Named注入它们。

您也可以在此处定义键入的命名列表:

    foo bar  

由于编译时JAVA类型擦除,这是不可能实现的。 JAVAgenerics仅在编译时可用,并确保类型安全。 在运行时,只剩下Object(引用)。

要确保类型安全(但仍然是运行时),唯一可以做的就是拥有任何类型的数组,并使用spring 标记来填充数据。 然后在运行时,当您尝试使用字符串填充Integer []时,您将收到exception。

如果使用generics,则可以使用Set ,并且在运行时最终使用Set ,因为提到的类型擦除。

如果您想要基于generics类型的动态自动布线,则由于类型擦除而不需要。 如果您只想连接一个定义为类型List (或其他)的列表,则没有什么可以阻止您这样做,例如:

应用背景:

  a b  

Java类:

 @Resource(name = "theList") List theList; 

但是,这不会提供类型安全性。