zoukankan      html  css  js  c++  java
  • BeanDefinition的Resource定位

    1.以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource定位容器使用的BeanDefiniton。这时使用的是ClassPathResource,这意味着Spring会在类路径中去寻找以文件形式存在的BeanDefinition信息。

    ClassPathResource res = new ClassPathResource("beans.xml");

    这里定义的Resource并不能由DefaultListableBeanFactory直接使用,Spring通过BeanDefinitionReader来对这些信息进行处理。在这里,我们也可以看到使用ApplicationContext相对于直接使用DefaultListableBeanFactory的好处。因为在ApplicationContext中,Spring已经为我们提供了一系列加载不同Resource的读取的实现,而DefaultListableBeanFactory只是一个存粹的IoC容器,需要为它配置特定的读取器才能完成这些功能。当然,有利就有弊,使用DefaultListableBeanFactory这种底层的容器,能提高定制IoC容器的灵活性。

    2.回到我们经常使用的ApplicationContext上来,例如FileSystemXmlApplicationContextClassPathXmlApplicationContext以及XmlWebApplication等。简单地从这些类的名字上分析,可以清楚地看到它们可以提供哪些不同的Resource读入功能,比如FileSystemXmlApplicationContext可以从文件系统载入ResourceClassPathXmlApplicationContext可以从Class Path载入ResourceXmlWebApplicationContext可以在Web容器中载入Resource,等等。

    3.下面以FileSystemXmlApplicationContext为例,通过分析这个ApplicationContext的实现来看看它是怎样完成这个Resource定位过程的。作为辅助,我们可以在下图中看到相应的ApplicationContext集成体系

    FileSystemXmlApplicationContext的继承体系

     

    1.从源码的实现角度,我们可以近距离关心以FileSystemXmlApplicationContext为核心的继承体系,如下图所示。

    1.从上图可以看到,这个FileSystemXmlApplicationContext已经通过继承AbstractApplicationContext具备了ResourceLoader读入以Resource定义的BeanDefinition的能力,因为AbstractApplicationContext基类DefaultResourceLoader。下面我们看看FileSystemXmlApplicationContext具体实现

  • 相关阅读:
    异常处理、网络编程
    内置函数、反射、__str__、__del__、元类
    tomcat 拒绝服务
    html标签
    google 与服务器搭建
    liunx centox ssh 配置
    java 泛型
    Windows Mysql安装
    java 空对象
    java 动态代理(类型信息)
  • 原文地址:https://www.cnblogs.com/duffy/p/3972310.html
Copyright © 2011-2022 走看看