java - 在 XML 中将 Spring 列表创建为 bean

标签 java xml spring

我想创建一个带有 ID 的 bean 列表,以便我可以使用 ApplicationContext.getBean() 将它检索到我的独立应用程序中。

我是这样创建列表的:

<list id="airMessageHandlers">
    <bean id="signInResultHandler" class="com.blah.AirMessageHandler"/>
</list>

那我想做

getBean("airMessageHandlers");

问题是当我引入 XML 文件时,我得到:

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 18 in XML document from class path resource [conf/portserver.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 18; columnNumber: 37; cvc-complex-type.2.4.a: Invalid content was found starting with element 'list'. One of '{"http://www.springframework.org/schema/beans":import, "http://www.springframework.org/schema/beans":alias, "http://www.springframework.org/schema/beans":bean, WC[##other:"http://www.springframework.org/schema/beans"], "http://www.springframework.org/schema/beans":beans}' is expected.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)

... 由以下原因引起:org.xml.sax.SAXParseException;行号:18;列数:37; cvc-complex-type.2.4.a:发现以元素“list”开头的无效内容。 '{"http://www.springframework.org/schema/beans ":import, "http://www.springframework.org/schema/beans ":alias, "http://www.springframework.org/schema/beans ":bean, WC[##other:"http://www.springframework.org/schema/beans "], "http://www.springframework.org/schema/beans ":beans}'之一是期待。 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) ...

我找不到一个列表作为独立 bean 的示例,我想知道这是否是一个问题,但 DTD 看起来很好。

最佳答案

原来的解决方案是:

<util:list id="airMessageHandlers">
    <ref bean="signInResultHandler"/>
</util:list>

<bean id="signInResultHandler" class="com.blah.AirMessageHandler"/>

关于java - 在 XML 中将 Spring 列表创建为 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22844409/

相关文章:

java - 用泛型定义抽象方法

java - 哪种方法更适合用于登录表单 doget() 或 dopost()

java - 如何通过环绕构造函数来替换类型的实例?

java - 尝试从 Java 控制台对文本用户输入进行 TDD 和单元测试

java - Android 应用程序、自定义数字选择器、长按时连续显示 toast

c++ - 在 C++ 项目中嵌入 XML 字符串资源

java - FAIL - 上下文路径/salamander 中的应用程序无法启动

python - 通过其相邻值推导 html 元素

spring - 为什么 Spring WebMvcTest 中没有响应主体

java - Spring Boot Actuator 应用程序无法在 Ubuntu VPS 上启动