Spring框架大家用得很多,相当熟悉,但是我对里面的运作比较好奇,例如bean的加载和使用,和我们定义的配置文件有什么联系;又例如aop在什么时候起作用,原理又是怎样.经过一个了解后,整理了启动和执行流程,只是描述我在意的流程分支,并不是全部源码流程.

在说流程之前,有几个概念是需要了解的

StandardContext             Tomcat中定义的容器,一个Web应用对应一个StandardContext

ServletContext                 Servlet规范中定义的,算是所有Servlet的上下文

ServletContextListener    实现该接口的类,可以监听到 StandardContext初始化完成事实和销毁完成事件

ApplicationContext         Spring中定义的容器接口,MVC使用的实现类是WebApplicationContext

Bean                               Spring容器中的元素,能够实现某些功能。除了Spring内置的,还有就是我们用注解定义和在配置中定义的Bean。

BeanFactory                   Bean工厂接口,在Spring中有各种各样的实现类,Bean在工厂中以BeanDefinition方式存在,负责在需要的时候将Bean实例化

BeanPostProcessor        Bean的后置处理器,通常在Bean实例化之后再包装处理一遍。如AutowiredAnnotationBeanPostProcessor用来处理注解autowire,再如aop的BeanPostProcessor就这个时候生成bean的代理

DispatcherServlet           Spring定义的Servlet,负责处理所有请求,并分配到达对应Controller。

下面的启动流程,其实算是源码流程,主要是写我比较感兴趣的bean加载和aop加载流程。

一次请求到达的处理流程,主要是写bean的实例化的过程

SpringMVC启动和执行流程的更多相关文章

  1. springmvc与struts2执行流程比较

    之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以 及struts2与spring-mvc的差别. 1.stru ...

  2. SpringMVC学习笔记:SpringMVC框架的执行流程

    一.MVC设计模式 二.SpringMVC框架介绍 三.SpringMVC环境搭建 四.SpringMVC框架的请求处理流程及体系结构

  3. SpringMVC拦截器执行流程

    1:MyInterceptor1.MyInterceptor2这2个拦截器都放行 MyInterceptor1......preHandleMyInterceptor2......preHandle ...

  4. SpringMVC架构&组件&执行流程

    SpringMVC架构: 组件: DIspatcherServlet:前端控制器.相当于mvc模式的c,是整个流程控制的中心,负责调用其他组件处理用户的请求,降低了组件之间的耦合性. HandlerM ...

  5. Django项目启动之前执行流程剖析

    下面,我们只看看主要的步骤: 1.项目启动,遍历settings下面的INSTALLED_APPS,导入默认配置. INSTALLED_APPS = [ 'django.contrib.admin', ...

  6. springmvc对请求执行流程

    doService-->getHandlerMapping-->handlerMapping-->getHandler-->HandlerExecutionChain--> ...

  7. SpringMVC之HandlerAdapter执行流程

    01.protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Except ...

  8. 面试高频SpringMVC执行流程最优解(源码分析)

    文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star! 搜索关注微信公众号 码出Offer 领取各种学习资料! SpringMVC执行流程 SpringMVC概述 Spri ...

  9. Servlet、Struts2、SpringMVC执行流程

    Servlet 有以下四个阶段: 1.加载和实例化 Servlet容器负责加载和实例化Servlet. 当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Ser ...

随机推荐

  1. spark streaming基础知识1

    1.怎么理解spark streaming中的dstream? 它是spark streaming的基础数据结构,代表着(time,RDD)序列,有两种生成方式,一种是基于流数据创建(kafka,so ...

  2. 【android】来电悬浮窗

    先看下效果图 说下思路: 1:监听来电广播 2:根据来电号码,和本地数据库做匹配,有记录的,则提取出头像.名字.职位,生成悬浮窗 3:监听来电广播,如果当前行为是空闲的(没有任何通话行为),则删除掉悬 ...

  3. 使用Spring Session和Redis解决分布式Session跨域共享问题

    http://blog.csdn.net/xlgen157387/article/details/57406162 使用Spring Session和Redis解决分布式Session跨域共享问题

  4. centos7开启网卡功能

    centos7安装完成后,网卡默认是关闭的,未分配ip地址 解决办法: 1.cd /etc/sysconfig/network-scripts/ 2.ls查看网卡 3.修改该文件 vi ifcfg-e ...

  5. Chrome搜索设置

    https://encrypted.google.com/ncr https://encrypted.google.com/search?{google:RLZ}{google:acceptedSug ...

  6. C#图片增加水印

    给图片增加水印 1.引用 using System.Drawing; 2.代码实现 string ImagePath = @"C:\Users\RAPOO\Pictures\Camera R ...

  7. Django学习笔记之Web框架由浅入深和第一个Django实例

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义web框架 impor ...

  8. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

  9. 20144303 《Java程序设计》第九周学习总结

    20144303 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 一.JDBC入门: JDBC全名Java DataBase Connectivity,是java联机数据库 ...

  10. linux-android(任务处理)

    1.开辟任务内存 2.设置每个任务优先级 ,,