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);
)
)