我想创建一个带有 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/