BeanFactory
1  | BeanFactory  | 
ObjectProvider
1  | ObjectFactory  | 
FactoryBean
1  | FactoryBean  | 
HierarchicalBeanFactory
1  | HierarchicalBeanFactory 继承 beanFactory  | 
ListableBeanFactory
1  | ListableBeanFactory 直接继承 beanfactory  | 
BeanFactoryUtils
1  | /*  | 
ConfigurableBeanFactory
1  | 
  | 
AutowireCapableBeanFactory
1  | AutowireCapableBeanFactory  | 
注:
对于bean工厂, 除了提供获取此工厂的bean的方法之外,某些还需要获取所有的bean数量,bean信息,bean的id名等,,有些场景工厂需要继承,还有对工厂的bean通过注解进行自动注入,自己能够配置自己,所以有了下面的ListableBeanFactory,HierarchicalBeanFactory,AutowireCapableBeanFactory,ConfigurableBeanFactory这些子接口(单一职责,开闭原则,里氏替换原则)
AbstractBeanFactory
1  | 继承 FactoryBeanRegistrySupport ConfigurableBeanFactory  | 
AbstractAutowireCapableBeanFactory
1  | 继承 AbstractBeanFactory AutowireCapableBeanFactory  | 
DefaultListableBeanFactory
1  | 继承 AbstractAutowireCapableBeanFactory ConfigurableListableBeanFactory BeanDefinitionRegistry  | 
SingletonBeanRegistry
1  | 
  | 
AliasRegistry
1  | /*  | 
SimpleAliasRegistry
1  | 继承 AliasRegistry  | 
DefaultSingletonBeanRegistry
1  | 继承 SimpleAliasRegistry SingletonBeanRegistry  | 
FactoryBeanRegistrySupport
1  | 继承 DefaultSingletonBeanRegistry  | 
BeanDefinitionRegistry
1  | 继承 AliasRegistry  | 
注:
spring 把 工厂和 bean注册中心分离开,工厂就是提供bean的视图,而bean注册中心就是 在一个bean生成之后需要存储的地方,两者都是相辅相成的: (接口隔离原则)
EnvironmentCapable
1  | /*  | 
MessageSource
1  | /*  | 
ResourceLoader
1  | ResourceLoader  | 
ResourcePatternResolver
1  | ResourcePatternResolver  | 
Lifecycle
1  | 
  | 
AutoCloseable
1  | 
  | 
Closeable
1  | /*  | 
ApplicationContext
1  | ApplicationContext  | 
ConfigurableApplicationContext
1  | 继承 ApplicationContext Lifecycle Closeable  | 
AbstractApplicationContext
1  | 继承 DefaultResourceLoader ConfigurableApplicationContext  | 
AbstractRefreshableApplicationContext
1  | 继承 AbstractApplicationContext BeanNameAware InitializingBean  | 
AbstractXmlApplicationContext
1  | 
  | 
注:
spring的ApplicationContext ,既然是一个应用程序的上下文,那么这个上下文需要包含程序启动到结束所需要的内容,例如 一个ListableBeanFactory用于获取所有的bean, 可以获取环境,资源解析器,消息源,事件发布
上下文除了 拥有这些东西之外,还要对这些东西可配置,可刷新 (依赖倒置原则 ,里氏替换原则,接口隔离原则)
Aware
1  | 
  | 
BeanNameAware
1  | 继承 aware  | 
InitializingBean
1  | 初始化之前处理完成后,调用  | 
BeanDefinitionReader
1  | 
  | 
AbstractBeanDefinitionReader
1  | /*  | 
XmlBeanDefinitionReader
1  | 
  | 
PropertiesBeanDefinitionReader
1  | /*  | 
注:
对于bean定义信息的读取,有多种多样,可以时xml,可以是类,还可以是其他,但是一定会有一个获取 bean注册中心的对象的方法,因为最终读取的bean信息会放到 注册中心,也要有环境来支持 bean信息的读取
(开闭原则,单一职责原则,里氏替换原则)
BeanExpressionResolver
1  | /*  | 
PropertyEditorRegistrar
1  | 
  | 
PropertyEditorRegistry
1  | /*  | 
PropertyEditor
1  | 
  | 
BeanFactoryPostProcessor
1  | 
  | 
BeanDefinitionRegistryPostProcessor
1  | /*  | 
注
spring 在bean工厂上也做了很多文章,在注册后置处理器之前,回调所有的beanfactory的后置处理,可以对bean工厂进行修改,也会调用bean注册的后置处理进行 bean信息注入,无论怎样,这样的设计可以自定义的增强bean工厂,而不是完全由spring控制
(开闭原则)
BeanPostProcessor
1  | 
  | 
InstantiationAwareBeanPostProcessor
1  | 继承 BeanPostProcessor  | 
SmartInstantiationAwareBeanPostProcessor
1  | 继承 InstantiationAwareBeanPostProcessor  | 
MergedBeanDefinitionPostProcessor
1  | 
  | 
AutowiredAnnotationBeanPostProcessor
1  | /*  | 
注
spring的bean处理, 也不能由spring完全控制,因为spring根本不知道客户需要对bean进行这样的处理,所以抽出 后置处理器的接口,让用户来自定义实现对bean的增强
(开闭原则,单一职责原则,接口隔离)
BeanDefinition
1  | 
  | 
AbstractBeanDefinition
1  | 继承 BeanDefinition BeanMetadataAttributeAccessor  | 
RootBeanDefinition
1  | 继承 AbstractBeanDefinition  | 
GenericBeanDefinition
1  | 继承 AbstractBeanDefinition  | 
ChildBeanDefinition
1  | 继承 AbstractBeanDefinition  | 
AopInfrastructureBean
1  | 
  | 
- 本文作者: 忘忧症
 - 本文链接: https://NepenthesZGW.github.io/2020/06/05/framework/Spring/spring名词/
 - 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
 
		