1、springMVC简介
1)springMVC架构
Spring MVC是结构最清晰的MVCModel 2实现。它的Action不叫Action,而是称做Controller;Controller接收request,response参数,然后返回ModelAndView(其中的Model不是Object类型,而是Map类型)。但在使用中, Controller返回值一般都只是一个
ViewName;Model则需要通过其它的途径(如request.attribute,Context参数,或Controller本身的属性数据)传递上去。
2)springMVC流程
3)springMVC核心组件
(1)prepareRefresh()
该方法所做的事情相对比较简单:记录容器启动的时间,并设置容器处于活跃状态
(2)、obtainFreshBeanFactory()
该方法的作用:创建BeanFactory实例,并解析Spring的xml配置文件。beanFactory的实现类是:ConfigurableListableBeanFactory。
(3)、prepareBeanFactory
创建好 BeanFactory 后,接着调用prepareBeanFactory方法,添加一些Spring本身需要的一些工具类
(4)、postProcessBeanFactory
方法是spring的一个扩展点之一,是一个空方法,留给子类去扩展。子类可以重写该方法,对已经构建的BeanFactory 的配置根据需要进行修改
(5)、invokeBeanFactoryPostProcessors
该方法的主要功能就是从spring配置文件中,获取实现BeanFactoryPostProcessor 接口的bean,然后按不同的优先级顺序,依次执行BeanFactoryPostProcessor的 postProcessBeanFactory 方法。
(6)、registerBeanPostProcessors
该方法的主要功能是:实例化并注册所有实现BeanPostProcessor接口的bean
(7)、initMessageSource
这个方法主要功能就是为spring容器初始化MessageSource,功能相对简单,如果spring配置文件没有定义messageSource,则使用默认的。
(8)、initApplicationEventMulticaster
这个方法的主要功能是为spring容器初始化ApplicationEventMulticaster,功能也相对简单,如果spring配置文件没有定义applicationEventMulticaster,则使用默认的
(9)、onRefresh该方法,默认是一个空的实现,留给子类去重写。
(10)、registerListeners 该方法的主要功能是注册实现ApplicationListener接口的bean。方法的具体实现如下
(11)、finishBeanFactoryInitialization
这个方法的主要功能是创建Bean 的实例对象以及构建Bean 实例对象之间的关联关系,该方法所做的事情,是spring的一个核心关键所在。
(12)、finishRefresh
该方法的作用是,发送一个ContextRefreshedEvent事件,通知相关的观察者
以上12个方法是springMVC的核心组件
4)SspringMVC-DispatchServlet
DispatcherServlet接受一个请求,然后解析完locales, themes等后,通过HadlerMapping解析控制器Controller去处理请求。
找到Controller后,出发当前controller的handleRequest()方法,此controller负责真正处理请求,然后一个ModelAndView实例。
DispatcherServlet 代理此Controller,接收返回结果,然后进行渲染。