Spring容器是如何启动的

一、 什么是Servlet、Tomcat

  1. 什么是Servlet:实质上是一个Java类,是一种运行在支持Java应用服务器上的Web组件,它与普通Java类的区别在于它是一个专门处理请求和响应的Java类。其主要功能是:接受前端用户的请求,调用后端的逻辑处理程序,最终给客户返回响应。HttpServlet:Servlet API的核心类,自定义的Servlet都是该类的子类。

    这里为什么要引入Servlet呢?因为HTML+JS的静态页面非常局限,不能灵活的处理页面和请求响应。所以引入Servlet + HTML来进行动态页面处理。

  2. 什么是Tomcat:Servlet是一种特殊的java类,必须在服务器容器里面生存工作。Tomcat就是这样一种服务器容器,它给Servlet提供生存环境(servlet必须在容器里启动),同时将Web请求封装成对象交给Setvlet处理,将Servlet相应封装成对象,返回给Web显示。

二、 Spring启动过程

  1. 首先,我们会在Web.xml文件中配置ContextLoaderListener监听器,Spring正是通过它来进行容器初始化的

  2. 加载WebApplicationContext

  3. 进行Bean对象的实例化和初始化

  4. 将Spring容器初始化到Servlet上下文中

三、核心源码解析

  1. 入口ContextLoderListener.contextInitialized,ContextLoaderListener继承了ContextLoader并实现了ServletContextListener,tomcat在调用ServletContextListener.contextInitialized时会自动进行初始化
  2. 创建WebApplicatinContext入口:this.context = this.createWebApplicationContext(servletContext, parent);期间从配置的contextConfigLocation加载了Spring的主配置文件,并通过DefinitionReader进行各种文件的扫描,组装成BeanDefinitions,根据BeanDefinitions进行对象的实例化和初始化
  3. servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context)将Spring容器初始化到Servlet上下文中,即作为servletContext.Attribute的一个属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值