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 list>标记来填充数据。 然后在运行时,当您尝试使用字符串填充Integer []时,您将收到exception。
如果使用generics,则可以使用Set
如果您想要基于generics类型的动态自动布线,则由于类型擦除而不需要。 如果您只想连接一个定义为类型List
(或其他)的列表,则没有什么可以阻止您这样做,例如:
应用背景:
a b
Java类:
@Resource(name = "theList") List theList;
但是,这不会提供类型安全性。
- 使用Java读取FoxPro 2.6数据
- 在Hadoop中传播自定义配置值
- 如何在Eclipse中重新启动Google App Engine Java Server?
- 如何避免Apache POI中的java.lang.NoSuchMethodError:org.apache.poi.util.IOUtils.copy(Ljava / io / InputStream; Ljava / io / OutputStream;)
- Java非阻塞IO选择器导致通道寄存器阻塞
- Java 8按一对多分组
- 从XMLGregorianCalendar转换为Calendar时的日期更改
- 如何将REST请求转发到另一个资源?
- Java中的TimeZonevalidation