SSM项目Bean的加载时机与DispatcherServlet的执行流程分析

前言:对SSM项目中bean的加载时机产生了兴趣,我们都知道Spring项目启动时会扫描所有模式注解、xml中的配置,以把相关的类注册成bean,那我们SSM项目是跑在服务器上的,不像SpringBoot直接执行main,它是在什么时候执行的注册bean的操作呢。同时它不像普通的web项目会配置很多servlet,SpringMVC靠一个DispatcherServlet来分发所有请求,个人对这个也比较好奇,想求证一下DispatcherServlet是不是靠getBean来获取对应的处理函数(RequestMapping对应的那个)

参考:

https://blog.youkuaiyun.com/h2604396739/article/details/84899251

https://www.jianshu.com/p/523bfddf0810

https://blog.youkuaiyun.com/hong10086/article/details/88715960

https://blog.youkuaiyun.com/q610376681/article/details/108740943

https://blog.youkuaiyun.com/Elena_jun/article/details/82698210

https://blog.youkuaiyun.com/hufuzhi1146231094/article/details/103074676

https://www.jianshu.com/p/0f981efdfbbd

目录

第一章 SSM项目Bean的加载时机

1.1 listener概要

1.2 servletContext

1.3  ContextLoaderListener

第二章 DispatcherServlet的执行流程

2.1 getHandler方法解析


第一章 SSM项目Bean的加载时机

1.1 listener概要

web项目中web.xml中配置的选项的加载顺序为context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的mapping 的顺序进行调用的。

现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

实现了ServletContextListener 接口后,在项目启动时就会调用contextInitialized中的方法。

public interface ServletContextListener extends EventListener {
    public default void contextInitialized(ServletContextEvent sce) {
    }
    public default void contextDestroyed(ServletContextEvent sce) {
    }
}

1.2 servletContext

javaEE标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息。ServletContext中的信息都是由容器提供的。

举例:

通过自定义contextListener获取web.xml中配置的参数
1.容器启动时,找到配置文件中的context-param作为键值对放到ServletContext中
2.然后找到listener,容器调用它的contextInitialized(ServletContextEvent event)方法,执行其中的操作

 

1.3 ContextLoaderListener

接下来到我们的正主了,我们在web.xml都会配置下面的监听器 ,ContextLoaderListener可以指定在Web应用程序启动时载入Ioc容器,正是通过ContextLoader来实现的,ContextLoader来完成实际的WebApplicationContext,也就是Ioc容器的初始化工作。

<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-cl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值