使用spring抛出异常,
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
原来的dtd是
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">改成
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
我们项目用的spring是2.5.6
使用字符串 初始化beanfactory
package *.util; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; public class StringXmlApplicationContext extends AbstractXmlApplicationContext { private Resource[] configResources; private ClassLoader cl; public StringXmlApplicationContext(String stringXml) { this(new String[] { stringXml }, null, null); } public StringXmlApplicationContext(String[] stringXmls) { this(stringXmls, null, null); } public StringXmlApplicationContext(String stringXml, ClassLoader cl) { this(new String[] { stringXml }, null, cl); } public StringXmlApplicationContext(String[] stringXmls, ClassLoader cl) { this(stringXmls, null, cl); } public StringXmlApplicationContext(String[] stringXmls, ApplicationContext parent, ClassLoader cl) { super(parent); this.cl = cl; this.configResources = new Resource[stringXmls.length]; for (int i = 0; i < stringXmls.length; i++) { this.configResources[i] = new ByteArrayResource(stringXmls[i].getBytes()); } refresh(); } protected Resource[] getConfigResources() { return this.configResources; } @Override public ClassLoader getClassLoader() { if (cl == null) { return super.getClassLoader(); } else { return this.cl; } } }