原创 SpringIoc源碼(七)- ApplicationContext(三)- refresh(prepareBeanFactory)

目錄 prepareBeanFactory 1)、設置BeanFactory類加載器 2)、設置Spring Expression解析器 StandardBeanExpressionResolver 3)、ResourceEditorRe

原创 SpringIoc源碼(十五)- BeanFactory(四)- getBean(doGetBean上 - 緩存中獲取)

目錄 下面爲非第一次getBean(已經初始化過一次),獲取的最短路徑 1、獲取真實的BeanName(傳入的可能是別名等)      1)、判斷是否爲獲取FactoryBean     2)、 判斷是否爲別名 2、從緩存中獲取實例(如果

原创 SpringIoc源碼(十六)- BeanFactory(五)- getBean(doGetBean下 - doCreateBean前的準備工作)

目錄 1、getSingleton 2、createBean 1)、獲取真正的Class類型 2)、初始化真正使用的RootBeanDefinition 3)、lookup-method和replace-method的處理 4)、Inst

原创 SpringIoc源碼(二十)- BeanFactory(九)- getBean(doCreateBean - initializeBean生命週期回調)

目錄 1、Aware接口回調 2、BeanPostProcessor的postProcessBeforeInitialization方法回調 3、ApplicationContextAwareProcessor的postProcessBe

原创 Spring Boot源碼(六) - 自動裝配(下)- AutoConfigurationImportSelector

目錄 一、process 1、getAutoConfigurationMetadata 2、getAutoConfigurationEntry 1)、獲取EnableAutoConfiguration註解的exclude和excludeN

原创 Spring Boot源碼(三) - SpringApplicationRunListener(EventPublishingRunListener)生命週期和回調時機

目錄 一、SpringApplicationRunListener生命週期方法 二、EventPublishingRunListener 三、總結 一、SpringApplicationRunListener生命週期方法     Spri

原创 SpringMVC源碼(五)- doDispatch - getHandler的準備階段(@RequestMapping解析註冊)

目錄 一、doDispatch的getHandler 1、RequestMappingHandlerMapping結構 2、setApplicationContext回調函數 3、afterPropertiesSet回調函數 1)、獲取可

原创 Spring Boot源碼(七) - 嵌入式Servlet服務器(Tomcat)

目錄 一、onRefresh(createWebServer) 1、獲取Servlet服務器工廠 2、根據不同Web類型的AbstractApplicationContext,對應不同的ServletContextInitializer以

原创 SpringIoc源碼(十)- ApplicationContext(六)- refresh(ConfigurationClassPostProcessor上)

目錄 ConfigurationClassPostProcessor 1、獲取所有註冊的BeanDefinition 2、判斷是否需要解析配置 1)、先獲取AnnotationMetadata信息 2)、判斷是否需要註解解析 3、排序 4

原创 Spring Boot源碼 - @ConditionalOnBean實現分析

目錄 1、OnBeanCondition的繼承結構 2、Condition的matches方法 1)、創建Spec對象 2)、獲取匹配的Bean 3)、判斷,組裝結果返回 3、AutoConfigurationImportFilter的m

原创 Spring源碼 - DeferredImportSelector實現分析

目錄 一、DeferredImportSelector類結構和接口調用時機 二、DeferredImportSelectorHandler的process方法 1、DeferredImportSelectorGroupingHandler

原创 Spring Boot源碼(二) - SpringApplication的run方法

  目錄 一、構造器初始化和run之前可以調整的配置 1、確定當前ApplicationContext類型 2、使用類加載器加載ApplicationContextInitializer和ApplicationListener 1)、獲取

原创 Spring源碼 - @Conditional實現分析

      @Conditional是Spring 4出現的註解,但是真正露出價值的是Spring Boot的擴展@ConditionalOnBean等。但是任然使用的是Spring框架進行處理,並沒有做太多定製的東西,所以還是先看看@C

原创 SpringIoc源碼(八)- ApplicationContext(四)- refresh(postProcessBeanFactory)

目錄 postProcessBeanFactory 1、AbstractRefreshableWebApplicationContext 1)、ServletContextAwareProcessor 2)、registerWebAppl

原创 Spring Boot源碼(四) - prepareEnvironment、反射創建ApplicationContext對象、prepareContext

目錄 一、創建和配置Environment 1、創建Environment對象(getOrCreateEnvironment) 2、配置Environment(ConversionService、main方法傳入的args參數、Profi