java - <list>标签在spring中是如何工作的

标签 java xml spring collections dependency-injection

我有一个 Collection 工具;在我的 SomeClass.java 中,我在我的 temp.xml 文件中声明了一个类 SomeClass.java 的 bean。在 xml 中,我将两个字符串对象添加到集合中。

我的问题是 Collection 是一个接口(interface)所以我不能实例化它而 List 也是一个接口(interface)所以我认为我们做不到

 Collection<String> someCollection = new List<String>();

我想知道当我们在 xml 文件中使用 list 标签时,java 代码是如何工作的。意思是对象存储在链表或数组列表或某种类型的列表中?

最佳答案

这取决于 ApplicationContext。每个实现可能不同,但您可以确定结果是 List。编码documentation :

Another custom namespace utility is for creating lists. The first bean definition is identical to the ListFactoryBean example except it's a little shorter and easier to read. The second bean definition is the same except it uses the list-class attribute to specify what List implementation to use. When the list-class attribute isn't used, the ApplicationContext will choose the implementation class.

<util:list id="messageUtilList">
    <ref bean="stringMessage01"/>
    <ref bean="stringMessage02"/>
    <value>Spring is fun to learn.</value>
</util:list>

<util:list id="messageUtilLinkedList" 
           list-class="java.util.LinkedList">
    <ref bean="stringMessage01"/>
    <ref bean="stringMessage02"/>
    <value>Spring is fun to learn.</value>
</util:list>

检查 implementation of ListFactoryBean您可以看到 ArrayList 是默认的列表实现,如果没有提供特定的列表类型,它就会被实例化。执行此任务的代码片段是:

if (this.targetListClass != null) {
    result = (List) BeanUtils.instantiateClass(this.targetListClass);
}
else {
    result = new ArrayList(this.sourceList.size());
}

关于java - <list>标签在spring中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399047/

相关文章:

java - 创建文档对象

java - 选择 X 窗口

java - 如何在 Spring Boot 中将所有常见依赖项从 Maven 模块移至父模块

java - 如何将Drawable(ripple-drawable)设置为跨度的背景?

java - Spring Boot Rest Controller 使用 Jackson 和 Hibernate 将 POJO 转换为 JSON 时出错

java - 如何从 contextDestroyed 中的 ServletContextListener 获取 bean

Java - 使用运行时运行curl命令被代理阻止

java - 在 Java 中平滑随机生成的地形以获得逼真的效果

php - 使用 CodeIgniter 创建 XML

java - 需要属性 'entityManagerFactory'