spring beans源码解读之--总结篇

AbstractFactoryBean:实现了FactoryBean的简单模板超类,它根据标志来决定是创建一个单例还是一个prototype对象。
BeanDefinitionHolder:使用名称或者别名来保存BeanDefinition。
BeanDefinitionVisitor:遍历BeanDefinition对象的参观者类,特别是也遍历bean中的属性值和构造参数值,解析bean的元数据值。
BeanExpressionContext:计算一个BeanDefinition内部的表达式的容器对象。
BeanReferenceFactoryBean:过期。 它是一个通过不同名称来暴露一个bean对象的工厂bean。从spring 3.2以后,开始使用别名(从spring 2.5开始支持解析占位符)来替代它
CommonsLogFactoryBean:过期。它是org.apache.commons.logging.Log实例的工厂bean,用来在多个bean对象中共享log实例,而不是每一个类使用一个log实例。从spring 3.2后,使用org.apache.commons.logging.LogFactory来代替了。
ConstructorArgumentValues:保存构造方法的参数值,特别是作为Beandefinition的一部分。
ConstructorArgumentValues.ValueHolder:保存构造方法的一个参数值。
CustomEditorConfigurer:继承自BeanFactoryPostProcessor,给自定义属性编辑器的注册提供了便利的方法。
CustomScopeConfigurer:BeanFactoryPostProcessor的简单实现,给自定义Scope的注册提供了便利的方法,上面提到ConfigurableBeanFactory提供了Scope的注册。
DependencyDescriptor:将要注入的特定依赖的描述。
DeprecatedBeanWarner:继承自BeanFactoryPostProcessor,记录@Deprecated bean的报警信息。
FieldRetrievingFactoryBean:检索静态或者非静态Field的值的工厂bean。
InstantiationAwareBeanPostProcessorAdapter:实现了SmartInstantiationAwareBeanPostProcessor所有方法的适配器,它没有任何操作,不会改变容器对bean进行初始化的处理过程。
ListFactoryBean:共享一组(list)实例的简单工厂bean。
MapFactoryBean:共享一组(map)实例的简单工厂bean。
MethodInvokingFactoryBean:一个有返回值的工厂bean,它返回触发一个静态或者实例的方法的结果。
ObjectFactoryCreatingFactoryBean:一个有返回值的工厂bean,它返回ObjectFactory。 
PlaceholderConfigurerSupport:属性资源配置器的抽象基类,它解析BeanDefinition中属性值的占位符。
PreferencesPlaceholderConfigurer:PropertyPlaceholderConfigurer的子类,支持JDK1.4中的Preferences API (java.util.prefs)
PropertiesFactoryBean:它支持从classpath位置的文件中读取属性实例的工厂bean。 
PropertyOverrideConfigurer:属性资源配置器,它支持在applicationContext中重写一个bean的属性值。
PropertyPathFactoryBean:通过给定目标对象计算属性路径的工厂bean。
PropertyPlaceholderConfigurer:PlaceholderConfigurerSupport的子类,它解析本地属性或者系统属性或者环境变量定义的占位符(以${}描述)。
PropertyResourceConfigurer:支持从一个属性资源中对单个bean的属性值进行配置。
ProviderCreatingFactoryBean:返回一个JSR-330 Provider的工厂bean,JSR-330 Provider反过来从beanFactory返回一个bean资源。
RuntimeBeanNameReference:固定占位符类,当在beanfactory中作为另外一个bean名称的引用时,作为属性值对象,将在运行时进行解析。 
RuntimeBeanReference:固定占位符类,当在beanfactory中作为另外一个bean的引用时,作为属性值对象,将在运行时进行解析。 
ServiceLocatorFactoryBean:继承自FactoryBean,在beanFactory中创建一个动态代理,来代理一个具有一个或者多个服务或者类型的接口。
SetFactoryBean;共享set实例的简单工厂bean
TypedStringValue:保存一个类型的属性值。

上述类信息,可以参考FactoryBean的实现接口或者类。

8. org.springframework.beans.factory.parsing 解析beanDefinition所需的基本类和接口。

包含的接口有:

ComponentDefinition:描述在同一配置的Context中一组BeanDefinition和BeanReference的逻辑视图的接口。
DefaultsDefinition:一个默认definition标识接口,继承了BeanMetadataElement,没有实现任何方法。 
ParseState.Entry:ParseState的入口标识接口 
ProblemReporter:spi接口,支持tool或者外部进程处理在beanDefinition解析期间报出的错误或者异常。. 
ReaderEventListener:接受在读取BeanDefinition进程中注册组件、别名、import时的回调接口。 
SourceExtractor:简单策略接口,允许工具控制source元数据关联到bean definition元数据。

包含的类有:

AbstractComponentDefinition:ComponentDefinition接口的基本实现,提供了AbstractComponentDefinition.getDescription()来代理ComponentDefinition.getName()方法。
AliasDefinition:代表在解析进程中一个别名已经被注册。
BeanComponentDefinition:基于一个标准BeanDefinition的ComponentDefinition,暴露指定bean的指定beanDefinition,内部BeanDefinition和BeanReference。 
BeanEntry:代表了一个BeanDefinition。 
CompositeComponentDefinition:保存了一个或者多个内嵌ComponentDefinition实例的ComponentDefinition实现,它把这些ComponentDefinition实例聚合成具有命名的组。
ConstructorArgumentEntry:代表了构造参数。
EmptyReaderEventListener:ReaderEventListener接口的空实现,所有回调方法都没有提供可执行操作。
FailFastProblemReporter:ProblemReporter接口的简单实现,当遇到错误发生时展示fail-fast行为。 
ImportDefinition:在解析进程中,代表一个import已经被处理。
Location:模型接口,一个资源位置的模型。
NullSourceExtractor:SourceExtractor接口的简单实现,返回null作为source元数据。 
ParseState:在解析进程中作为一个简单的基于栈结构的追踪逻辑位置类。 
PassThroughSourceExtractor:SourceExtractor的简单实现,它通过一个attachment来传递备选的源数据类型对象。
Problem:代表了一个beanDefinition配置问题。 
PropertyEntry:代表了一个javaBean的属性。 
QualifierEntry:代表了一个自动绑定的备选qualifier。 
ReaderContext:bean definition读取进程中传递的一个Context,封装了所有相关的配置,包括状态。

BeanDefinitionValidationException:一个bean definition验证失败时抛出异常的异常类。

9. org.springframework.beans.factory.serviceloader包含的类有:

AbstractServiceLoaderBasedFactoryBean:FactoryBean的抽象基类,它是操作JDK1.6 ServiceLoader的基础工具。 
ServiceFactoryBean:暴露指定配置的服务类的基础服务的FactoryBean,通过JDK1.6 serviceLoader基础类来获取这些服务。
ServiceListFactoryBean:暴露配置的服务类的所有基础服务的FactoryBea,表现为一组服务对象,可以通过JDK1.6 serviceLoader基础类来获取这些服务。
ServiceLoaderFactoryBean:暴露指定配置服务类的JDK1.6 serviceLoader的FactoryBean。

10.org.springframework.beans.factory.support:

其中接口有:
AutowireCandidateResolver:策略接口,对特定的依赖,这个接口决定一个特定的bean definition是否满足作为自动绑定的备选项。 
BeanDefinitionReader:bean definition解析器的简单接口。
BeanDefinitionRegistry:持有beanDefinition的注册接口,例如RootBeanDefinition和ChildBeanDefinition实例。 
BeanDefinitionRegistryPostProcessor:标准BeanFactoryPostProcessor SPI的扩展接口,允许在常规BeanFactoryPostProcessor检查之前注册更多bean definition。
BeanNameGenerator:对beanDefinition产生bean名称的策略接口。 
InstantiationStrategy:负责根据相应的根bean definition创建实例的接口。 
MergedBeanDefinitionPostProcessor:后处理回调接口,在运行时合并bean definition。
MethodReplacer:一个可以重新定义Ioc容器对象的所有方法的接口:方法注入是依赖注入的一种形式。 
SecurityContextProvider:运行在beanFactory中的安全Context的提供者。

其中类有:
AbstractAutowireCapableBeanFactory:抽象beanFactory的超类,它使用指定的RootBeanDefinition类的所有方法实现创建默认bean。 
AbstractBeanDefinition:具体、成熟BeanDefinition类的基类,构造出RootBeanDefinition和ChildBeanDefinition的通用属性。 
AbstractBeanDefinitionReader:实现了BeanDefinitionReader接口,是beanDefinitionReader的抽象基类。 
AbstractBeanFactory:BeanFactory的抽象基类实现,提供ConfigurableBeanFactory SPI的全部功能。
AutowireCandidateQualifier解析自动绑定备选项Qualifier。
BeanDefinitionBuilder:使用建造者模式构建BeanDefinition的编程方法。 
BeanDefinitionDefaults:简单保持BeanDefinition的默认属性类。
BeanDefinitionReaderUtils:BeanDefinitionReader实现使用的工具方法类。
CglibSubclassingInstantiationStrategy:BeanFactory默认对象初始化策略。
ChildBeanDefinition:从父类继承各种设置的bean的beanDefinition。 
DefaultBeanNameGenerator:BeanNameGenerator接口的默认实现,代理BeanDefinitionReaderUtils.generateBeanName(BeanDefinition, BeanDefinitionRegistry)方法。
DefaultListableBeanFactory:ListableBeanFactory接口和BeanDefinitionRegistry接口的默认实现:基于beanDefinition对象的一个成熟的beanFactory。
DefaultSingletonBeanRegistry:共享bean实例的通用注册,实现了SingletonBeanRegistry。 
FactoryBeanRegistrySupport:一个支持单例注册(需要处理FactoryBean实例)的基类,集合了DefaultSingletonBeanRegistry对单例的管理功能。
GenericBeanDefinition:通用BeanDefinition是一站式的标准bean Definition。
LookupOverride:表示可以重写一个在同一个Ioc上下文中查找对象的方法。
ManagedArray:集合类,用来保存它所管理的array元素,它可以包含运行时期的bean引用(将被解析为bean对象)
ManagedList 集合类,用来保存它所管理的List元素,它可以包含运行时期的bean引用(将被解析为bean对象). 
ManagedMap 集合类,用来保存它所管理的array值,它可以包含运行时期的bean引用(将被解析为bean对象) 
ManagedProperties:表示一个spring管理的属性实例,它支持父/子 definition的合并。
ManagedSet 集合类,用来保存它所管理的set值,它可以包含运行时期的bean引用(将被解析为bean对象) 
MethodOverride:表示重写对象,它针对Ioc容器所管理对象的方法的重写。
MethodOverrides:一组方法重写,决定了在运行时期对spring ioc容器管理对象的重写方法(如果存在的话)。 
PropertiesBeanDefinitionReader:简单属性格式的BeanDefinitionReader。
ReplaceOverride:MethodOverride的扩展,表示一个Ioc容器方法的任意重写。
RootBeanDefinition:根BeanDefinition,表示在运行时期的spring BeanFactory中一个合并的BeanDefinition。 
SimpleAutowireCandidateResolver:继承自AutowireCandidateResolver,当出现不支持的注解时使用。 
SimpleBeanDefinitionRegistry:BeanDefinitionRegistry接口的简单实现。
SimpleInstantiationStrategy:BeanFactory中简单对象的初始化策略。
SimpleSecurityContextProvider:SecurityContextProvider的简单扩展。
StaticListableBeanFactory:静态BeanFactory的实现,用来编程实现注册已经存在的单例实例。

11.org.springframework.beans.factory.wiring包含的类有;

BeanWiringInfoResolver:策略接口,能够根据给定的一个新初始化的bean对象解析bean的名称信息。
BeanConfigurerSupport:配置bean的便利基类,它可以对对象进行依赖注入。 
BeanWiringInfo:保存特定类的bean的绑定元数据信息。
ClassNameBeanWiringInfoResolver:BeanWiringInfoResolver的简单默认实现,查找一个和全限定名同名的bean的名称。

12.org.springframework.beans.factory.xml

其中,接口有:
BeanDefinitionDecorator:DefaultBeanDefinitionDocumentReader用来处理自定义的,内嵌的标签的接口 
BeanDefinitionDocumentReader:解析包含spring BeanDefinition的xml文件的SPI. 
BeanDefinitionParser:DefaultBeanDefinitionDocumentReader用来处理自定义的,高层的标签的接口 
DocumentLoader:加载xml文件的策略接口。 
NamespaceHandler:DefaultBeanDefinitionDocumentReader用来处理在spring xml配置文件中的自定义命名空间的基础接口。
NamespaceHandlerResolver:DefaultBeanDefinitionDocumentReader用来定位NamespaceHandler的接口,NamespaceHandler实现了特定的URI命名空间。

其中,类有:
AbstractBeanDefinitionParser:BeanDefinitionParser的抽象实现,提供了许多便利方法和模板方法,模板方法需要在子类进行重写来提供具体的逻辑实现。
AbstractSimpleBeanDefinitionParser:AbstractBeanDefinitionParser的简单实现,当将要解析元素的属性名和配置类的属性名一一对应的时候,可以用到该类。 
AbstractSingleBeanDefinitionParser:BeanDefinitionParser的基类,需要解析和定义单独的BeanDefinition
BeanDefinitionParserDelegate:状态代理类,用来解析xml BeanDefinition。
BeansDtdResolver:spring bean dtd解析器EntityResolver的实现,用来从classpath或者jar文件加载dtd。
DefaultBeanDefinitionDocumentReader:BeanDefinitionDocumentReader接口的默认实现。
DefaultDocumentLoader:spring 的DocumentLoader默认实现。
DefaultNamespaceHandlerResolver:NamespaceHandlerResolver接口的默认实现。 
DelegatingEntityResolver:EntityResolver的实现,分别代理了dtd的BeansDtdResolver和xml schemas的 PluggableSchemaResolver。 
DocumentDefaultsDefinition:简单的javaBean,它保存标准的spring xml文件中级别的属性,如:default-lazy-init, default-autowire等等
NamespaceHandlerSupport:支持实现自定义的NamespaceHandler。 
ParserContext:传递一个beanDefinition 解析进程到此上下文,封装了所有的相关配置也包括状态。 
PluggableSchemaResolver:继承自EntityResolver,使用一系列map文件将schema url解析到本地classpath资源。 
ResourceEntityResolver:继承自EntityResolver,通过ResourceLoader来解析实体的引用。
SimpleConstructorNamespaceHandler:单NamespaceHandler实现,它将自定义属性直接映射到bean属性。 
SimplePropertyNamespaceHandler:简单NamespaceHandler实现,它将自定义属性直接映射到bean属性。 
UtilNamespaceHandler:工具命名空间的NamespaceHandler
XmlBeanDefinitionReader
Bean definition reader for XML bean definitions. 
XmlBeanFactory 过期。从spring 3.2 后推荐使用DefaultListableBeanFactory和XmlBeanDefinitionReader来代替它。
XmlReaderContext:ReaderContext的扩展,一般和XmlBeanDefinitionReader一起使用。

13. org.springframework.beans.factory.access包含的类有:

BeanFactoryLocator:定义一个BeanFactory及其子类(如ApplicationContext)的查询、使用、释放的协议。
BeanFactoryReference:用来追踪一个通过BeanFactoryLocator获得的BeanFactory的引用。 
SingletonBeanFactoryLocator:BeanFactoryLocator的keyed-singleton实现,它可以访问共享的spring beanFactory实例。

14. org.springframework.beans.factory.access.el

SimpleSpringBeanELResolver:SpringBeanELResolver的简单实现,代理一个使用解析器构造的BeanFactory。
SpringBeanELResolver:通用EL的ELResolver,代理一个spring BeanFactory,将名称引用解析为spring定义的bean。

 

小结:

spring beans 是Ioc容器实现的最初形态,深入理解spring beans模块有助于加深对IoC容器的认识,而基于web应用的IoC容器Application又是构建与BeanFactory之上的,这样的话,我怎么强调它的重要性都不为过吧。

spring beans最重要的两个东西要搞定即BeanFactory的继承关系和FactoryBean的继续关系,在阅读源码中,你会发现应用了很多设计模式,如工厂模式,建造者模式,适配器模式,模板方法模式,单例模式、代理模式等等,我就不一一列举了,自己去探索吧。

你可能感兴趣的:(spring)