AutowireCapableBeanFactory接口的實現類是AbstractAutowireCapableBeanFactory。AutowireCapableBeanFactory接口的做用是經過多種方式建立bean,執行bean的生命週期,bean處理,依賴解決等。AutowireCapableBeanFactory提供的功能實在用得太少了,實在不重要。整個設計,實現比較複雜。可是AbstractAutowireCapableBeanFactory裏面一些方法確實整個BeanFactory核心,重要的處理流程。java
public interface AutowireCapableBeanFactory extends BeanFactory { <T> T createBean(Class<T> beanClass) throws BeansException; Object createBean(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException; Object autowire(Class<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException; void autowireBean(Object existingBean) throws BeansException; Object configureBean(Object existingBean, String beanName) throws BeansException; void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck) throws BeansException; void applyBeanPropertyValues(Object existingBean, String beanName) throws BeansException; Object initializeBean(Object existingBean, String beanName) throws BeansException; Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName) throws BeansException; Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName) throws BeansException; void destroyBean(Object existingBean); <T> NamedBeanHolder<T> resolveNamedBean(Class<T> requiredType) throws BeansException; Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName) throws BeansException; Object resolveDependency(DependencyDescriptor descriptor, String requestingBeanName, Set<String> autowiredBeanNames, TypeConverter typeConverter) throws BeansException; }
從上面的接口聲明的方法看AutowireCapableBeanFactory主要有以下功能spring
| | 實例化 | 初始化 | 依賴解決 | 完整bean處理流程 | ------------ | ------------ | | autowireBean | 否 | 否 | 是 | 否 | | autowireClass | 是 | 否 | 是 | 否 | | configureBean | 否 | 是 | 是 | 否 | | createBead(Class ) | 是 | 是 | 是| 是|緩存
細節以下app
回顧下bean的生命週期與bean監控post
在這鳥菜啊說句:抱歉。這麼複雜的源碼流程,實在沒有辦法用一種比較可讀,流利的文字給描述出來,你們能夠按照文字表示的流程,逐步觀看。多看幾回,就能夠看懂了。ui
AbstractAutowireCapableBeanFactory就作了兩件事.net