# Learning-Spring-Mvc **Repository Path**: fujc2dev/Learning-Spring-Mvc ## Basic Information - **Project Name**: Learning-Spring-Mvc - **Description**: Learning-Spring-Mvc - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-11 - **Last Updated**: 2025-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 尝试自定义Spring Mvc ```text Springmvc处理器类型: @Controller servlet Controller接口 handleRequest HttpRequestHandler handleRequest ``` servlet3.0的核心接口:ServletContainerInitializer,调用onStartup方法; ```java public interface ServletContainerInitializer { void onStartup(Set> c, ServletContext ctx) throws ServletException; } ``` #### Spring Mvc启动流程 ```text 1.启动tomcat; 2.完成Ioc创建,初始化,扫描(ClasspathApplicationContext、AnnotationConfigApplicationContext) ``` tomcat 应用(tomcat.sh) --> webapps目录 --> war包(Spring) --> servlet规范 tomcat.sh servlet规范要求tomcat必须找到这个ServletContainerInitializer接口的实现类。 #### SPI:服务发现机制 ```text 特定的目录(目录的路径是定死的,相对路径,META-INF/service+接口全限定名)下: 实现类 ServletContainerInitializer接口实现类,有可能在任意jar内。 能Get到SPI是怎么回事。 自定义类加载器:隔离应用(tomcat可以发布多个应用) webapps目录:可以放多个war包(如果不同jar包里面发现了相同路径的类,那就歇菜了) ``` #### Dubbo SPI #### JDK SPI ```text 自定义类加载器:打破双亲委派 ``` #### Spring SPI ===================================================================================