前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring MVC中servlet架构

Spring MVC中servlet架构

作者头像
用户2909867
发布2018-08-22 11:18:29
3880
发布2018-08-22 11:18:29
举报
文章被收录于专栏:互联网大杂烩互联网大杂烩
IOC

控制反转,用一句话解释这个概念就是将对象的创建和获取提取到外部。由外部容器提供需要的组件。

AOP

确实就是代理模式的体现, 面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。 AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, Servlet继承结构中一共有五个类, Java:GenericServlet,HttpServlet。 Spring:HttpServletBean,FrameWorkServlet和DispatcherServlet. spring中,这三个类实现了三个接口EnvironmentCapple,EnvironmentAware和Application-ContextAware. xxxAware在spring中表示对xxx的感知,就是在某个类需要使用spring的一些东西,就可以通过实现xxxAware告诉spring,spring看到后就会给你送过来,接收的方式是通过实现唯一的方法set-XXX。EnvironmentCappable,就是具有Environment的能力,可以提供Environment,EnvironmentCappable唯一的方法是Environment getEnvironment(),用于实现EnvironmentCapable接口的类,告诉spring它可以提供Environment,当spring需要Environment的时候就会调用getEnvironment()方法跟他要。 Environment就是环境,和servletcontex有点类似,保存了全局的信息。 在HttpServeltBean中的Environment使用的是standard-servlet-Environment,在createEnvironment方法中创建,封装了servletContext,还封装了,servletconfig,JndiProperty(Initial Contexts设置默认属性。),系统环境变量,系统属性等。都封装到propertySources属性下。

HttpServletBean

HttpServletBean分别实现了HttpServlet,EnvironmentCapable,EnvironmentAware. 简单扩展HttpServlet,给各种类型的servlet提供了一个便利的超类,提供了对属性的操作。 在HttpServletBean的init方法中,首先将Servlet中配置的参数使用BeanWrapper设置到DispatcherServlet的相关属性。然后调用模板方法initServletBean,进行初始化。

FrameworkServlet

入口:initServletBean() 初始化webApplicationContext和FrameworkServlet. initFrameworkServlet是模板方法,子类覆盖后可以在里面做一些初始化的工作,但子类并没有用它。 initWebApplicationContext: 1.获取spring的根容器,rootContext. 2.设置webApplicationContext并根据情况调用onRefresh方法。 3.将webApplicationContext设置到ServletContext中。 根据publishContext标志位判断是否将创建webApplicationContext设置到Servlet的属性中。 配置servlet时设置的初始化参数: 1.contextAtteibute:在ServletContext中,用作webApplicationContext的属性名称。 2.contextclass:创建webApplicationContext的类型。 3.contextConfigloaction:spring mvc配置文件的位置。 4.publicContext:是否将webApplicationContext设置到ServletContext的属性。

DispatcherServlet

onRefresh()是DispatcherServlet的入口方法,onRefresh中简单地调用了initStrategies方法,在initStrategies中调用调用了9个init方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IOC
  • AOP
  • HttpServletBean
  • FrameworkServlet
  • DispatcherServlet
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档