spring beans下面有以下源文件包:html
org.springframework.beans, 包含了操做java bean的接口和類。
org.springframework.beans.annotation, 支持包,提供對java 5註解處理bean樣式的支持。
org.springframework.beans.factory, 實現spring輕量級IoC容器的核心包。
org.springframework.beans.factory.access, 定位和獲取bean工程的輔助工具類。
org.springframework.beans.factory.access.el,從統同樣式的EL 獲取spring beanFactory的支持類
org.springframework.beans.factory.annotation, 配置基於註解驅動的bean的支持包。
org.springframework.beans.factory.config, bean工廠的SPI接口和配置相關的處理類。
org.springframework.beans.factory.parsing, bean definition解析的支持基礎類
org.springframework.beans.factory.serviceloader, jdk1.6 ServiceLoader基礎類的支持包。
org.springframework.beans.factory.support,org.springframework.beans.factory包的支持類
org.springframework.beans.factory.wiring, 一種決定一個bean實例的元數據的機制。
org.springframework.beans.factory.xml, 包含了一個基於xml的beanFactory實現,也包含一個標準的spring-beans的dtd
org.springframework.beans.propertyeditors, 屬性編輯器,用來將string類型的值轉換爲object類型,例如:java.util.Properties
org.springframework.beans.support,org.springframework.beans的支持包,像:一組bean的排序和保持工具類等。java
1.org.springframework.beans包含的類和接口有:web
其中接口有:spring
1.1 BeanInfoFactory:建立java.beans.BeanInfo實例的策略。
1.2 BeanMetadataElement:傳送配置源對象的超級接口。定義了惟一的方法:Object getSource();其子類和子接口以下:apache
1.3 PropertyAccessor:獲取和設置屬性(例如對象bean的屬性,對象的Field)的通用接口,它用來做爲BeanWrapper的基礎接口。主要方法有:編程
Class getPropertyType(String propertyName)
TypeDescriptor getPropertyTypeDescriptor(String propertyName)
Object getPropertyValue(String propertyName)
boolean isReadableProperty(String propertyName) boolean isWritableProperty(String propertyName) void setPropertyValue(PropertyValue pv)
繼承關係:設計模式
1.4 BeanWrapper: spring 底層JavaBean公共基礎的核心接口。
1.5 ConfigurablePropertyAccessor: PropertyAccessor配置方法的封裝接口。
1.6 Mergeable 表明一個對象的值組能夠和父對象的值組合並的接口。其主要子類有:anagedList, MManagedArray, ManagedMap, ManagedProperties, ManagedSet。爲了加深對這個接口的理解,咱們以ManagedList爲例,看一下它合併的實現方法:緩存
public List<E> merge(Object parent) { List<E> merged = new ManagedList<E>(); merged.addAll((List<E>) parent); merged.addAll(this); return merged; }
1.7 PropertyEditorRegistrar: 用一個屬性編輯註冊器(PropertyEditorRegistry)註冊一個自定義的屬性編輯器(PropertyEditor)的策略接口。安全
1.8 PropertyEditorRegistry: 封裝了javabean屬性編輯器的註冊方法。
1.9 PropertyValues:包含了一個或者多個PropertyValue對象,一般用做特定的一個目的bean的屬性更新,主要方法是:PropertyValues changesSince(PropertyValues old);
1.10 TypeConverter:定義了類型轉換方法的接口。app
其中類有:
1.11 AbstractPropertyAccessor: PropertyAccessor接口的抽象實現.
1.12 BeanMetadataAttribute:bean definition定義中屬性鍵值對容器.
1.13 BeanMetadataAttributeAccessor:AttributeAccessorSupport的擴展,爲了追蹤對象定義源 holding attributes as BeanMetadataAttribute objects in order to keep track of the definition source.
1.14 BeanUtils: javabean的靜態工具方法:用來初始化bean、檢查bean的屬性,複製bean的屬性等等。
1.15 BeanWrapperImpl:BeanWrapper的默認實現,可以適用於絕大多數應用場合。
1.16 CachedIntrospectionResults:.內部類,緩存一個類的javabean的屬性描述信息。使用情境:BeanWrapperImpl.java
public PropertyDescriptor[] getPropertyDescriptors() { return getCachedIntrospectionResults().getPropertyDescriptors(); }
1.17 DirectFieldAccessor PropertyAccessor的實現類,直接獲取實例的field。
1.18 ExtendedBeanInfoFactory BeanInfoFactory接口實現,評估bean的class是否有不知足javaBean規範的set方法,於是是否知足spring ExtendedBeanInfo做爲內省的候選。
1.19 MutablePropertyValues Default implementation of the PropertyValues interface.
1.20 PropertyAccessorFactory:獲取PropertyAccessor實例的簡單工廠門面, 特別是獲取BeanWrapper實例。PropertyAccessorFactory.java
public static BeanWrapper forBeanPropertyAccess(Object target) { return new BeanWrapperImpl(target); }
1.21 PropertyAccessorUtils:工具方法或者工具類,根據PropertyAccessor 獲取bean屬性。
1.22 PropertyEditorRegistrySupport:PropertyEditorRegistry接口的基本實現類。.
1.23 PropertyValue:一個對象,它保存一個bean的單獨屬性的值信息。
1.24 PropertyValuesEditor Editor for a PropertyValues object.
1.25 SimpleTypeConverter TypeConverter接口的簡單實現類,它不會針對一個特定的目標對象進行操做。
1.26 TypeConverterSupport TypeConverter接口的基本實現類,使用包私有的代理
異常處理類:
BeanInstantiationException: bean初始化失敗時拋出的異常。
BeansException:在beans包和子包中所拋出的全部異常的抽象超類。
ConversionNotSupportedException:當一個bean的屬性沒有適合的編輯器或者轉換器時所拋出的異常。
FatalBeanException:在bean包和子包中遇到的不可恢復問題拋出的異常,例如:當引用一個無效的bean屬性時拋出的InvalidPropertyException異常。
MethodInvocationException:當一個bean屬性的get和set方法拋出異常時拋出該異常,相似於InvocationTargetException。
NotReadablePropertyException:當試圖獲取一個不可讀屬性的屬性值時拋出的異常,典型場景bean屬性沒有get方法。
NotWritablePropertyException:當試圖向一個不可寫屬性寫入屬性值時拋出的異常,典型場景bean屬性沒有set方法。 .
NullValueInNestedPathException:當獲取一個內嵌屬性路徑的屬性時遇到空指針異常時拋出的異常。
PropertyAccessException:獲取屬性相關的異常超類,例如類型不匹配或者目標調用異常。
PropertyBatchUpdateException組合異常,由多個的單個PropertyAccessException實例組成。
TypeMismatchException:當試圖設置bean屬性時拋出的類型不匹配異常。
2. org.springframework.beans.annotation包含的類有:
AnnotationBeanUtils:javabean類型註解的通用工具方法。方法有:
public static void copyPropertiesToBean()
靜態方法,拷貝指定Annotation的屬性到給定的目標bean。
3. org.springframework.beans.propertyeditors屬性編輯器,用來將string類型的值轉換爲object類型,例如:java.util.Properties。包含的類有:
ByteArrayPropertyEditor.java,CharacterEditor.java,CharArrayPropertyEditor.java,CharsetEditor.java,ClassArrayEditor.java,ClassEditor.java,CurrencyEditor.java,CustomBooleanEditor.java,CustomCollectionEditor.java,CustomDateEditor.java,CustomMapEditor.java,CustomNumberEditor.java,FileEditor.java,InputSourceEditor.java,InputStreamEditor.java,LocaleEditor.java,PatternEditor.java,PropertiesEditor.java,ResourceBundleEditor.java,StringArrayPropertyEditor.java,StringTrimmerEditor.java,TimeZoneEditor.java,URIEditor.java,URLEditor.java,UUIDEditor.java,ZoneIdEditor.java
它們的共同特色是實現了PropertyEditorSupport,實現了setAsText,getAsText
4. org.springframework.beans.support包含的類有:
ArgumentConvertingMethodInvoker:MethodInvoker的子類,經過TypeConverter將真實目標方法的指定參數進行轉換。
MutableSortDefinition:SortDefinition接口的可變實現。
PagedListHolder<E>:PagedListHolder是一個簡單的狀態保持,它處理一組對象,將它們分頁。
PropertyComparator:比較對象爲兩個bean,經過BeanWrapper來比較指定bean的屬性。
ResourceEditorRegistrar:繼承了PropertyEditorRegistrar,使用資源編輯器來填充指定的PropertyEditorRegistry。
5.org.springframework.beans.factory包含類有:
其中接口有:
Aware:它是一個標籤,內部沒有任何屬性或者方法。它是一個超級接口,實現它的子接口的bean標誌着在spring容器中能夠被特定框架的對象通知到,經過回調方式的方法來完成這種通知。
繼承關係:
BeanClassLoaderAware 容許一個獲取它的classLoader(即當前bean factory加載bean類使用的class loader)的回調類,實現了void setBeanClassLoader(ClassLoader classLoader);方法
void setBeanClassLoader(ClassLoader classLoader);
BeanFactory:獲取spring bean容器的根接口。
(圖片來源:http://www.myexception.cn/software-architecture-design/925888.html)
BeanFactoryAware實現此接口的bean能夠獲取到它們本身的Beanfactory。
void setBeanFactory(BeanFactory beanFactory) throws BeansException;
BeanNameAware實現此接口的bean能夠在一個bean factory中獲取到它們的bean名稱。
void setBeanName(String name);
DisposableBean:實現此接口的bean但願在銷燬方法中釋放資源。
void destroy() throws Exception;
FactoryBean<T>:實現了此接口的bean不能看作一個一般意義上的bean,一個FactoryBean雖然以bean的形式來定義,但它暴露的對象(getObject())一般是它建立的對象。
T getObject() throws Exception; Class<?> getObjectType(); boolean isSingleton();
HierarchicalBeanFactory:子接口,實現此接口的bean factory具備層次結構便可以獲取父BeanFactory。
BeanFactory getParentBeanFactory(); boolean containsLocalBean(String name);
InitializingBean:實現此接口的bean在BeanFactory設置爲它們的屬性時只須要執行一次,例如:初始化定製或者僅僅檢查必須存在的屬性是否已經設置完成等等。
void afterPropertiesSet() throws Exception;
ListableBeanFactory:beanFactory接口的實現,實現此接口的beanFactory能遍歷他們內部的全部bean實例,而不用根據客戶請求經過名字一個一個的去搜索bean。
String[] getBeanDefinitionNames();
String[] getBeanNamesForType(Class<?> type);
NamedBean:對應BeanNameAware接口,返回bean的名稱。
/** * Return the name of this bean in a Spring bean factory. */ String getBeanName();
ObjectFactory<T>:一個對象工廠,當觸發時會返回全部對象的實例(能夠是共享的或者獨立的);
T getObject() throws BeansException;
SmartFactoryBean<T>:FactoryBean接口的擴展實現。
boolean isPrototype(); boolean isEagerInit();
其中類有:
BeanFactoryUtils:beanFactory上的操做方法工具類,特別是在ListableBeanFactory接口上。
異常處理類:
BeanCreationException:beanfactory在試圖經過bean definition建立一個bean時遇到錯誤而拋出的異常。
BeanCreationNotAllowedException:若當前不容許建立一個bean時(例如在beanFactory關閉過程當中)而試圖去獲取bean的請求時拋出的異常。
BeanCurrentlyInCreationException:一個bean的引用當前正在建立過程當中拋出的異常。
BeanDefinitionStoreException:beanFactory遇到一個無效的bean definition拋出的異常.
BeanExpressionException:獲取一個表達式的值失敗時拋出的異常。
BeanInitializationException:bean初始化異常時拋出
BeanIsAbstractException:當試圖獲取一個定義爲abstract的bean definition時拋出的異常。
BeanIsNotAFactoryException:當一個bean不是工廠,但用戶試圖經過給定bean名稱訪問工廠。
BeanNotOfRequiredTypeException:當一個bean的類型和指望類型不匹配時拋出的異常。
CannotLoadBeanClassException:BeanFactory不能加載指定bean的class類時拋出的異常。
FactoryBeanNotInitializedException:工廠bean沒有初始化異常。
NoSuchBeanDefinitionException:沒有該bean definition異常
NoUniqueBeanDefinitionException:返回多個bean definition異常。
UnsatisfiedDependencyException:當有依賴檢查時,在bean factory定義中,bean的依賴或者屬性沒有指定時拋出的異常
6.org.springframework.beans.factory.annotation
參見:http://www.cnblogs.com/davidwang456/p/4199459.html
其中接口有:
AnnotatedBeanDefinition:BeanDefinition接口的擴展,它暴露了它的bean 類的AnnotationMetadata,不須要加載類。
AnnotationMetadata getMetadata();
其中類有:
AnnotatedGenericBeanDefinition:GernericBeanDefinition接口的擴展,經過暴露AnnotatedBeanDefinition接口來增長對註解元數據的支持。
public AnnotatedGenericBeanDefinition(Class<?> beanClass) { setBeanClass(beanClass); this.metadata = new StandardAnnotationMetadata(beanClass, true); }
AnnotationBeanWiringInfoResolver繼承自BeanWiringInfoResolver,使用配置的註解來查找哪些類須要自動綁定。實現瞭解析方法:
BeanWiringInfo resolveWiringInfo(Object beanInstance);
AutowiredAnnotationBeanPostProcessor:實現了BeanPostProcessor接口,它自動綁定註解的field,set方法和任意配置方法。
BeanFactoryAnnotationUtils:關聯註解的bean的查詢的工具方法,例如spring的@Qualifier註解。
public static <T> T qualifiedBeanOfType()
CustomAutowireConfigurer:繼承了BeanFactoryPostProcessor,它使自定義的自動綁定qualifier類型的註冊更便利。.
InitDestroyAnnotationBeanPostProcessor繼承了BeanPostProcessor,實現了註解觸發init和destroy方法。
InjectionMetadata:管理注入元數據的內部類。
QualifierAnnotationAutowireCandidateResolver:實現了AutowireCandidateResolver,功能是將qualifier註解要自動綁定的field或者參數和bean definition qualifier相匹配。
RequiredAnnotationBeanPostProcessor:實現了BeanPostProcessor,對配置了Required註解的javaBean屬性進行強制檢查。
枚舉類:
Autowire:決定自動綁定狀態的枚舉,即一個bean的依賴是否由spring容器使用setter方式自動注入。這個是spring DI的核心概念。
註解類:
Autowired:public @interface Autowired:能夠對成員變量、方法和構造函數進行標註,來完成自動裝配的工做。
Configurable:@Configurable
註解中的autowire屬性就可讓Spring來自動裝配
Qualifier:@Qualifier(value = "限定標識符") 。
Required:public @interface Required 依賴檢查;
Value:public @interface Value:用於注入SpEL表達式,能夠放置在字段方法或參數上。
7. org.springframework.beans.factory.config包含的類有:
http://www.cnblogs.com/davidwang456/p/4187012.html
http://www.cnblogs.com/davidwang456/p/4192318.html
其中接口有:
AutowireCapableBeanFactory:beanFactory的擴展接口,實現了自動綁定功能。這個接口的兩個主要方法是:
Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException;
void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck)throws BeansException;
autowire:使用給定的自動綁定策略,來給一個類的新實例進行初始化。
autowireBeanProperties:使用名稱或者類型來自動綁定給定bean實例的屬性。
BeanDefinition;一個bean實例的描述,它含有屬性值,構造參數值。它的實現子類還提供更多的信息。
BeanExpressionResolver:經過計算一個表達式來解析爲值的策略接口。
Object evaluate(String value, BeanExpressionContext evalContext) throws BeansException;
BeanFactoryPostProcessor:容許對一個applicationContext中的bean definition進行定製修改,修改context內含的bean factory中bean的屬性值。
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;
BeanPostProcessor:容許對一個新的bean實例進行定製修改的工廠鉤子。
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException; Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
BeanReference:暴露了bean名稱的引用接口。
String getBeanName();
ConfigurableBeanFactory:將會被大部分beanFactory實現的配置接口。
ConfigurableListableBeanFactory:將會被大部分ListablebeanFactory實現的配置接口。
DestructionAwareBeanPostProcessor:BeanPostProcessor的子接口,它增長了一個銷燬前回調方法。
void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException;
InstantiationAwareBeanPostProcessor:BeanPostProcessor的子接口,它增長了一個初始化前回調方法,還有一個在初始化後但顯式設置屬性或者自動綁定發生前的回調方法。
Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException; boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException;
PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName)throws BeansException;
Scope:ConfigurableBeanFactory使用的策略接口,表明了bean實例所在的目標域。咱們來從ConfigurableBeanFactory來看Scope的使用狀況:
String SCOPE_SINGLETON = "singleton"; String SCOPE_PROTOTYPE = "prototype"; void registerScope(String scopeName, Scope scope); String[] getRegisteredScopeNames(); Scope getRegisteredScope(String scopeName);
從上述代碼中咱們能夠得知,默認有兩種策略,singleton 單例即只有一個bean實例;prototype 原型即多個bean實例。若是想增長scope,能夠經過registerScope來註冊新的scope。
SingletonBeanRegistry:定義了共享bean實例的註冊接口。
void registerSingleton(String beanName, Object singletonObject);
注意:prototype 實例是經過PrototypeAspectInstanceFactory來產生,而它由LazySingletonAspectInstanceFactoryDecorator來進行包裝,保證僅返回一個aspect。
SmartInstantiationAwareBeanPostProcessor:InstantiationAwareBeanPostProcessor的擴展接口,它增長了對一個處理過bean的最終類型進行預測的回調方法。
Class<?> predictBeanType(Class<?> beanClass, String beanName) throws BeansException;
其中類有:
AbstractFactoryBean<T>:實現了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<E> 集合類,用來保存它所管理的List元素,它能夠包含運行時期的bean引用(將被解析爲bean對象).
ManagedMap<K,V> 集合類,用來保存它所管理的array值,它能夠包含運行時期的bean引用(將被解析爲bean對象)
ManagedProperties:表示一個spring管理的屬性實例,它支持父/子 definition的合併。
ManagedSet<E> 集合類,用來保存它所管理的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用來處理自定義的,內嵌的<bean>標籤的接口
BeanDefinitionDocumentReader:解析包含spring BeanDefinition的xml文件的SPI.
BeanDefinitionParser:DefaultBeanDefinitionDocumentReader用來處理自定義的,高層的<beans>標籤的接口
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文件中<bean>級別的屬性,如: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的繼續關係,在閱讀源碼中,你會發現應用了不少設計模式,如工廠模式,建造者模式,適配器模式,模板方法模式,單例模式、代理模式等等,我就不一一列舉了,本身去探索吧。
注:這篇博客我寫了8天才基本的東西寫完,差點堅持不住呀,幾回想放棄,後續要繼續豐富內容,爲了有寫繼續寫下去的動力,就直接發上去了。