Spring 学习笔记(二)Spring 中的一些概念
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。
XmlBeanDefinitionReader
加载xml配置文件,获取<bean/>
ClassPathBeanDefinitionScanner
这个并不是BeanDefinitionReader,但是它的作用和BeanDefinitionReader类似,它可以进行扫描,扫描某个包路径,对扫描到的类进行解析,比如,扫描到的类上如果存在@Component注解,那么就会把这个类解析为一个BeanDefinition。
BeanFactory
BeanFactory 是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范。
功能
负责生产和管理bean的一个工厂。
IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象的依赖。
多种实现:如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等。
DefaultListableBeanFactory
Spring中比较核心的是BeanFactory的实现类是DefaultListableBeanFactory
类结构图如下
它实现了很多接口,表示,它拥有很多功能:
AliasRegistry:支持别名功能,一个名字可以对应多个别名
BeanDefinitionRegistry:可以注册、保存、移除、获取某个BeanDefinition
BeanFactory:Bean工厂,可以根据某个bean的名字、或类型、或别名获取某个Bean对象
SingletonBeanRegistry:可以直接注册、获取某个单例Bean
SimpleAliasRegistry:它是一个类,实现了AliasRegistry接口中所定义的功能,支持别名功能
ListableBeanFactory:在BeanFactory的基础上,增加了其他功能,可以获取所有BeanDefinition的beanNames,可以根据某个类型获取对应的beanNames,可以根据某个类型获取{类型:对应的Bean}的映射关系
HierarchicalBeanFactory:在BeanFactory的基础上,添加了获取父BeanFactory的功能
DefaultSingletonBeanRegistry:它是一个类,实现了SingletonBeanRegistry接口,拥有了直接注册、获取某个单例Bean的功能
ConfigurableBeanFactory:在HierarchicalBeanFactory和SingletonBeanRegistry的基础上,添加了设置父BeanFactory、类加载器(表示可以指定某个类加载器进行类的加载)、设置Spring EL表达式解析器(表示该BeanFactory可以解析EL表达式)、设置类型转化服务(表示该BeanFactory可以进行类型转化)、可以添加BeanPostProcessor(表示该BeanFactory支持Bean的后置处理器),可以合并BeanDefinition,可以销毁某个Bean等等功能
FactoryBeanRegistrySupport:支持了FactoryBean的功能
AutowireCapableBeanFactory:是直接继承了BeanFactory,在BeanFactory的基础上,支持在创建Bean的过程中能对Bean进行自动装配
AbstractBeanFactory:实现了ConfigurableBeanFactory接口,继承了FactoryBeanRegistrySupport,这个BeanFactory的功能已经很全面了,但是不能自动装配和获取beanNames
ConfigurableListableBeanFactory:继承了ListableBeanFactory、AutowireCapableBeanFactory、ConfigurableBeanFactory
AbstractAutowireCapableBeanFactory:继承了AbstractBeanFactory,实现了AutowireCapableBeanFactory,拥有了自动装配的功能
DefaultListableBeanFactory:继承了AbstractAutowireCapableBeanFactory,实现了ConfigurableListableBeanFactory接口和BeanDefinitionRegistry接口
评论