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 许可协议。转载请注明出处!