BeanFactory类ITeye - AG环亚娱乐集团

BeanFactory类ITeye

2019-01-11 12:10:31 | 作者: 宛亦 | 标签: 供给,容器,功用 | 浏览: 1277

引证:在Spring Ioc容器的代表便是org.springframework.beans包中的BeanFactory接口,BeanFactory接口供给了IoC容器最根本功用;而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还供给了与Spring AOP集成、国际化处理、事情传达及供给不同层次的context完成 (如针对web使用的WebApplicationContext)。简单说, BeanFactory供给了IoC容器最根本功用,而 ApplicationContext 则增加了更多支撑企业级功用支撑。ApplicationContext彻底承继BeanFactory,因此BeanFactory所具有的语义也适用于ApplicationContext。

• XmlBeanFactory:BeanFactory完成,供给根本的IoC容器功用,能够从classpath或文件体系等获取资源;

  (1)  File file = new File("fileSystemConfig.xml");

           Resource resource = new FileSystemResource(file);

           BeanFactory beanFactory = new XmlBeanFactory(resource);

  (2)

          Resource resource = new ClassPathResource("classpath.xml");                 

          BeanFactory beanFactory = new XmlBeanFactory(resource);

• ClassPathXmlApplicationContext:ApplicationContext完成,从classpath获取配置文件;

         BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");

• FileSystemXmlApplicationContext:ApplicationContext完成,从文件体系获取配置文件。

 

         BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");

 

首要,XmlBeanFactory的源码如下,其间 XmlBeanDefinitionReader来处理xml文件,留意,这儿this是将BeanFactor目标作为参数传入XmlBeanDefinitionReader(解析xml)中,便于后期解析xml时将解析后的BeanDefinition(用于bean实例化)放入BeanFactory:

Resource类有关具体解说可参阅:http://jinnianshilongnian.iteye.com/blog/1416319

public class XmlBeanFactory extends DefaultListableBeanFactory {
 private final XmlBeanDefinitionReader reader;
 public XmlBeanFactory(Resource resource) throws BeansException {
 this(resource, (BeanFactory) null);
 public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory)
 throws BeansException {
 super(parentBeanFactory);
 this.reader = new XmlBeanDefinitionReader(this);
 this.reader.loadBeanDefinitions(resource);
}

 接下来看怎样处理的:

public class XmlBeanDefinitionReader extends AbstractBeanDefinitionReader {
 public int loadBeanDefinitions(Resource resource)
 throws BeanDefinitionStoreException {
 return this.loadBeanDefinitions(new EncodedResource(resource));
 public int loadBeanDefinitions(EncodedResource encodedResource)
 throws BeanDefinitionStoreException {
 //...
 arg4 = this.doLoadBeanDefinitions(inputSource,
 encodedResource.getResource());
 //...                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章