当前位置:   article > 正文

springmvc运行流程分析,手写spring框架尝试_field.set(entry.getvalue(), ioc.get(beanname));

field.set(entry.getvalue(), ioc.get(beanname));

      该文章主要是分析Springmvc启动的流程(配置阶段、初始化阶段和运行阶段),可以让自己对spring框架有更深一层的理解。对框架比较感兴趣的朋友都可以了解阅读下,对于我所描述的内容有错误的还望能不吝指出。

 

对于springmvc中的整个流程我个人把他分为这几个阶段,包括个人手写的spring也是参照此按阶段实现:

1.配置阶段

根据web.xml ,先定义DispatcherServlet并且定义该sevlet传入的参数和路径。

 

2.初始化阶段

初始化阶段中又可以分为IOC、DI和MVC阶段:

        (1)IOC:初始化配置文件和IOC容器,扫描配置的包下的类,通过反射机制将需要实例化的类放入IOC容器,既将带有spring注解的类进行实例化后存放到 IOC 容器中。IOC容器的实质就是一个集合;

        (2)DI:DI阶段(其实就是依赖注入)。对需要赋值的实例属性进行赋值(一般较多都是处理带有注解的@Autowrized的属性)

        (3)MVC:构造出HandlerMapping集合,主要作用就是用于存放对外公开的API和Method之间的关系,一个API一般会对应一个可执行的Method.

 

3.运行阶段

运行阶段中,当接受到一个url后,会到HandleMapping集合中,找到对应Method、通过反射机制去执行invoker,再返回结果给调用方。

这样就大体完成了springmvc整个运行阶段,所描述的都仅为个人观点,如果有误请在评论中指出。

 其整体流程可以参照下图:

 

 

接下来就来尝试手写一个类似springmvc的框架了,这个手写的过程还是相当有成就感的!

 

1.创建一个空的JavaWeb工程,引入依赖,其实因为我们是要手写spring,所以基本不需要什么外部的依赖工具,只需要导入servlet-api即可,如下:

  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>servlet-api</artifactId>
  4. <version>2.5</version>
  5. <scope>provided</scope>
  6. </dependency>

2.根据上述的流程描述,接下来就是对web.xml进行配置:

  1. <servlet>
  2. <servlet-name>appServlet</servlet-name>
  3. <servlet-class>com.wangcw.cwframework.sevlet.CwDispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>application.properties</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet&
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/206984
推荐阅读
相关标签
  

闽ICP备14008679号