Spring MVC
Spring MVC 运行流程
- Spring MVC 将所有的请求都提交给
DispatcherServlet
,它会委托应用系统的其他模块负责对请求进行真正的处理工作。 DispatcherServlet
查询一个或多个HandlerMapping
,找到处理请求的 Controller.DispatcherServlet
请求提交到目标 Controller- Controller 进行业务逻辑处理后,会返回一个
ModelAndView
- Dispatcher 查询一个或多个
ViewResolver
视图解析器,找到ModelAndView
对象指定的视图对象 - 视图对象负责渲染返回给客户端。
Spring MVC 启动流程
在 web.xml
文件中给 Spring MVC 的 Servlet 配置了 load-on-startup
,所以程序启动的时候会初始化 Spring MVC,在 HttpServletBean
中将配置的 contextConfigLocation
属性设置到 Servlet 中,然后在 FrameworkServlet
中创建了 WebApplicationContext
,DispatcherServlet
根据 contextConfigLocation
配置的 classpath
下的 xml 文件初始化了 Spring MVC 总的组件。
Spring 的单例实现原理
Spring 对 Bean 实例的创建是采用单例注册表的方式进行实现的,而这个注册表的缓存是 ConcurrentHashMap 对象。
Spring 框架中用到了哪些设计模式
- 代理模式:在 AOP 和 Remoting 中被用的比较多。
- 单例模式:在 Spring 配置文件中定义的 Bean 默认为单例模式。
- 模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
- 前端控制器:Spring 提供了 DispatcherServlet 来对请求进行分发。
- 视图帮助(View Helper ):Spring 提供了一系列的 JSP 标签,高效宏来辅助将分散的代码整合在视图里。
- 依赖注入:贯穿于 BeanFactory / ApplicationContext 接口的核心理念。
- 工厂模式:BeanFactory 用来创建对象的实例。
转自:有梦想的咸鱼