Spring 学习笔记(二)Spring 中的一些概念

用户头像
无语
关注
发布于: 2020 年 10 月 12 日

Spring模块体系

  • spring-aop

  • spring-aspects

  • spring-context-indexer

  • spring-context-support

  • spring-context

  • spring-core

  • spring-expression

  • spring-instrument

  • spring-jcl

  • spring-jdbc

  • spring-jms

  • spring-messaging

  • spring-orm

  • spring-oxm

  • spring-test

  • spring-tx

  • spring-web

  • spring-webflux

  • spring-webmvc

  • spring-websocket



BeanDefinition

它是spring framework当中的基石,直译为Bean对象的定义,简单的说就是spring当中的建模对象。

类结构图如下





BeanDefinitionReader

见名知意用于加载生成beanDefinition对象,分为如下几类:

AnnotatedBeanDefinitionReader

解析该类上的注解,将某个类转换为BeanDefinition。

DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
AnnotatedBeanDefinitionReader annotatedBeanDefinitionReader = new AnnotatedBeanDefinitionReader(beanFactory);
// 将User.class解析为BeanDefinition
annotatedBeanDefinitionReader.register(User.class);
System.out.println(beanFactory.getBean("user"));

XmlBeanDefinitionReader

加载xml配置文件,获取<bean/>

ClassPathBeanDefinitionScanner

这个并不是BeanDefinitionReader,但是它的作用和BeanDefinitionReader类似,它可以进行扫描,扫描某个包路径,对扫描到的类进行解析,比如,扫描到的类上如果存在@Component注解,那么就会把这个类解析为一个BeanDefinition。



BeanFactory

BeanFactory 是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范。

功能

  • 负责生产和管理bean的一个工厂。

  • IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象的依赖。

  • 多种实现:如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等。



DefaultListableBeanFactory

Spring中比较核心的是BeanFactory的实现类是DefaultListableBeanFactory

类结构图如下

它实现了很多接口,表示,它拥有很多功能:

  1. AliasRegistry:支持别名功能,一个名字可以对应多个别名

  2. BeanDefinitionRegistry:可以注册、保存、移除、获取某个BeanDefinition

  3. BeanFactory:Bean工厂,可以根据某个bean的名字、或类型、或别名获取某个Bean对象

  4. SingletonBeanRegistry:可以直接注册、获取某个单例Bean

  5. SimpleAliasRegistry:它是一个类,实现了AliasRegistry接口中所定义的功能,支持别名功能

  6. ListableBeanFactory:在BeanFactory的基础上,增加了其他功能,可以获取所有BeanDefinition的beanNames,可以根据某个类型获取对应的beanNames,可以根据某个类型获取{类型:对应的Bean}的映射关系

  7. HierarchicalBeanFactory:在BeanFactory的基础上,添加了获取父BeanFactory的功能

  8. DefaultSingletonBeanRegistry:它是一个类,实现了SingletonBeanRegistry接口,拥有了直接注册、获取某个单例Bean的功能

  9. ConfigurableBeanFactory:在HierarchicalBeanFactory和SingletonBeanRegistry的基础上,添加了设置父BeanFactory、类加载器(表示可以指定某个类加载器进行类的加载)、设置Spring EL表达式解析器(表示该BeanFactory可以解析EL表达式)、设置类型转化服务(表示该BeanFactory可以进行类型转化)、可以添加BeanPostProcessor(表示该BeanFactory支持Bean的后置处理器),可以合并BeanDefinition,可以销毁某个Bean等等功能

  10. FactoryBeanRegistrySupport:支持了FactoryBean的功能

  11. AutowireCapableBeanFactory:是直接继承了BeanFactory,在BeanFactory的基础上,支持在创建Bean的过程中能对Bean进行自动装配

  12. AbstractBeanFactory:实现了ConfigurableBeanFactory接口,继承了FactoryBeanRegistrySupport,这个BeanFactory的功能已经很全面了,但是不能自动装配和获取beanNames

  13. ConfigurableListableBeanFactory:继承了ListableBeanFactory、AutowireCapableBeanFactory、ConfigurableBeanFactory

  14. AbstractAutowireCapableBeanFactory:继承了AbstractBeanFactory,实现了AutowireCapableBeanFactory,拥有了自动装配的功能

  15. DefaultListableBeanFactory:继承了AbstractAutowireCapableBeanFactory,实现了ConfigurableListableBeanFactory接口和BeanDefinitionRegistry接口



用户头像

无语

关注

还未添加个人签名 2018.08.11 加入

还未添加个人简介

评论

发布
暂无评论
Spring 学习笔记(二)Spring中的一些概念