1.概念
BeanDefinitionReader用于加载Bean,常规用到最多的就是bean的xml配置
2.示例
XmlBeanDefinitionReader需要传入一个BeanDefinitionRegistry实例,并调用loadBeanDefinitions方法加载一个xml文件的Resource资源
loadBeanDefinitions调用结束后xml中声明的bean就会注册到BeanDefinitionRegistry中
@Test
public void test() {
SimpleBeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
Resource resource = new InputStreamResource(getClass().getResourceAsStream("test.xml"));
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(registry);
reader.loadBeanDefinitions(resource);
testBeanDefinitions(registry);
}
3.根据XmlBeanDefinitionReader来创建BeanFactory
protected BeanFactory createDefinition(String resourceLocation) {
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
try {
Resource[] configResources = resourcePatternResolver.getResources(resourceLocation);
reader.loadBeanDefinitions(configResources);
}
catch (IOException ex) {
throw new BeanDefinitionStoreException(
"Error accessing bean definition resource [" + this.resourceLocation + "]", ex);
}
catch (BeanDefinitionStoreException ex) {
throw new FatalBeanException("Unable to load group definition: " +
"group resource name [" + this.resourceLocation + "]", ex);
}
return factory;
}