首页 spring源码分析Spring-容器的入口-源码解析001

Spring-容器的入口-源码解析001

mc 2022-02-17 11:52:20 0 269

Spring是什么东西呢,他为什么可以管理整个项目呢。为什么要把整个项目给他管理呢?

首先,Spring是一个容器,可以装东西的容器,Tomcat也是可以理解成一个容器,部署项目的时候都是在Tomcat中。然后运行Tomcat,项目就能访问。

Tomcat启动的过程中会调用Servlet,Servlet会调用init,所以String想要让他的容器被初始化,得再这里做手脚,于是在Servlet初始化的时候注入他的代码,一并被初始化,也就是方法被重写了。


由tomcat容器启动后,会执行项目工程里面的web.xml,web.xml配置spring前端控制器(DispatcherServlet),会继承了tomcat容器后,就是到了spring容器管理所有生命周期。


前端控制器DispatcherServlet

org.springframework.web.servlet.DispatcherServlet
    
实际上就是调用了HttpServlet
HttpServlet 初始化会调用init invoke
spring也重写了他的方法,随后注入他的代码被tomcat启动过程初始化调用servlet的init方法,

spring初始化过程会做一些ioc(动态反转),aop(切面技术)的初始化操作


有些不是web工程,但是他需要spring的ioc和aop功能,定时器,所以不用引入springmvc,只需要引入spring
spring和springmvc 是2个容器,spring是父容器,springmvc是子容器不影响,不冲突的。会加载2次,只能加载了spring的配置容器,springmvc初始化的时候才能拿到servletcontent。


ServletContextListener

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
web配置的监听器,servlet启动的时候会加载ServletContextListener会加载contextInitialized这个方法

通过监听器来初始化spring的容器

org.springframework.web.context.ContextLoaderListener#contextInitialized
调用:
initWebApplicationContext(event.getServletContext());
初始化spring上下文,也就是spring容器
event.getServletContext()这是servlet上下文(容器),把这个容器给了他
您可能对以下文章感兴趣
发表评论