提交 66939ded 编写于 作者: D David Syer

RESOLVED - issue SPR-6366: Cannot import bean definitions using classpath*: resource location

http://jira.springframework.org/browse/SPR-6366
上级 17887d24
...@@ -27,6 +27,7 @@ import org.springframework.beans.factory.config.BeanDefinitionHolder; ...@@ -27,6 +27,7 @@ import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.parsing.BeanComponentDefinition; import org.springframework.beans.factory.parsing.BeanComponentDefinition;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.support.ResourcePatternUtils;
import org.springframework.util.ResourceUtils; import org.springframework.util.ResourceUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.util.SystemPropertyUtils; import org.springframework.util.SystemPropertyUtils;
...@@ -172,9 +173,10 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume ...@@ -172,9 +173,10 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume
boolean absoluteLocation = false; boolean absoluteLocation = false;
try { try {
absoluteLocation = ResourceUtils.toURI(location).isAbsolute(); absoluteLocation = ResourcePatternUtils.isUrl(location) || ResourceUtils.toURI(location).isAbsolute();
} catch (Exception ex) { } catch (Exception ex) {
// cannot convert to an URI, considering the location relative // cannot convert to an URI, considering the location relative
// unless it is the well-known Spring prefix classpath*:
} }
// check the // check the
......
...@@ -82,6 +82,20 @@ public class XmlBeanDefinitionReaderTests extends TestCase { ...@@ -82,6 +82,20 @@ public class XmlBeanDefinitionReaderTests extends TestCase {
testBeanDefinitions(registry); testBeanDefinitions(registry);
} }
public void testWithImport() {
SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();;
Resource resource = new ClassPathResource("import.xml", getClass());
new XmlBeanDefinitionReader(registry).loadBeanDefinitions(resource);
testBeanDefinitions(registry);
}
public void testWithWildcardImport() {
SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();;
Resource resource = new ClassPathResource("importPattern.xml", getClass());
new XmlBeanDefinitionReader(registry).loadBeanDefinitions(resource);
testBeanDefinitions(registry);
}
public void testWithInputSource() { public void testWithInputSource() {
try { try {
SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();; SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();;
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<import resource="classpath:/org/springframework/beans/factory/xml/test.xml"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<import resource="classpath*:/org/springframework/beans/factory/xml/test.xml"/>
</beans>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册