IOC
從refresh方法開始
定位:會先通過getResource方法獲取到資源的URL
加載:通過loadBeanDefinitions方法把資源變成BeanDefinition對象
註冊:把BeanDefinition對象信息放到一個容器中,這個容器並不是IOC容器,對象中只是保存了配置信息
DI
主要是在getBean方法中
主要通過instantiateBean將BeanDefinition進行實例化
然後包裝成BeanWrapper(AOP)
然後通過populateBean進行依賴注入
在將BeanWrapper放入IOC容器中(IOC中有單例和隨到隨用)
AOP
會在getBean時返回一個代理對象,其中會加載一個AdviseSupport,裏面包含AOP代理配置
通過解析配置針對每個符合攔截規則的方法創建一條攔截器鏈(MethodInterceptor#invoker)
MVC
DispatchServlet # init()
init(
initStrategies(
// 初始化九大組件
//多文件上傳的組件
initMultipartResolver(context);
//初始化本地語言環境
initLocaleResolver(context);
//初始化模板處理器
initThemeResolver(context);
//handlerMapping(url和方法建立關係)
initHandlerMappings(context);
//初始化參數適配器
initHandlerAdapters(context);
//初始化異常攔截器
initHandlerExceptionResolvers(context);
//初始化視圖預處理器
initRequestToViewNameTranslator(context);
//初始化視圖轉換器
initViewResolvers(context);
)
)