Spring基础篇

核心类:

Spring核心类主要包含下面两个:

  • DefaultListableBeanFactory

  • XmlBeanDefinitionReader


关于DefaultListableBeanFactory相关类继承关系如下:

  1. Object (java.lang)
  2. SimpleAliasRegistry (org.springframework.core)
    主要是使用map作为alias的缓存,并对接口AliasRegistry实现。
  3. DefaultSingletonBeanRegistry
    (org.springframework.beans.factory.support)
    对SingletonBeanRegistry各函数实现。
  4. FactoryBeanRegistrySupport (org.springframework.beans.factory.support)
    在DefaultSingletonBeanRegistry基础上增加了对FactoryBean的特殊处理。
  5. AbstractBeanFactory (org.springframework.beans.factory.support)
    综合FactoryBeanRegistrySupport和ConfigurableBeanFactory的功能。
  6. AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
    综合AbstractBeanFactory并对接口AutowireCapableBeanFactory进行实现。
  7. DefaultListableBeanFactory (org.springframework.beans.factory.support)
    综合上面所有功能,主要是对Bean注册后的处理。
  8. XmlBeanFactory (org.springframework.beans.factory.xml) (Deprecated)
    对DefaultListableBeanFactory扩展,从xml文档中读取BeanDefinition,对于注册和获取Bean都是从父类DefaultListableBeanFactory继承的方法去实现。与父类不同的是,增加了XmlBeanDefinitionReader类型的reader属性,使用reader属性对资源文件进行读取和注册。

关于XmlBeanDifinitionReader相关类继承关系如下:

实现
继承
实现
实现
继承
实现
实现
实现
C XmlBeanDefinitionReader
I DocumentLoader
C AbstractBeanDefinitionReader
I BeanDefinitionDocumentReader
C DefaultBeanDefinitionDocumentReader
I BeanDefinitionParserDelegate
I ResourceLoader
I BeanDefinitionReader
I EnvironmentCapable

XML读取大致流程:

  1. 通过继承AbstractBeanDefinitionReader中的方法,使用ResourceLoader将资源文件路径转换为对应Resource文件。
  2. 通过DocumentLoader对Resource文件进行转换,将Resource文件转换为Document文件。
  3. 通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Element进行解析。

Example:

 // 构造工厂
 DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
 // 新增Xml阅读器
 XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
 // 规则注册入容
 reader.loadBeanDefinitions(new ClassPathResource("ClassPath:spring-config.xml"));
 UserDto userDto = factory.getBean(UserDto.class);
 注意:不用XmlBeanFactory,因为在spring3.1中已经将该方法废弃。

资源文件处理相关类图:

继承
继承
继承
继承
继承
继承
继承
实现
继承
继承
C ClassRelativeContextResource
C ClassPathResource
C AbstractFileResolvingResource
C UrlResource
C AbstractResource
C FileSystemResource
C DescriptiveResource
C ByteArrayResource
I Resource
I ContextResource
I InputStreamSource

未完待续。。。

你可能感兴趣的:(spring,Java)