
- SpringMVC配置类
- Controller
- Servlet容器初始化的配置类
- 流程分析
SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.10.RELEASEversion>
dependency>
dependencies>
SpringMVC配置类
// 配置类
@Configuration
@ComponentScan("controller")
public class SpringMVCConfig {
}
Controller
// 等同于 Sevlet的功能
// 它必须是受 SpringMVC 管理的 bean
@Controller
public class UserController {
@RequestMapping("/save") // 设置请求访问路径
@ResponseBody // 设置响应内容为当前返回值,无需解析
public String save(){
// 处理请求
System.out.println("user save ...");
return "{'info':'springmvc'}";
}
}
Servlet容器初始化的配置类
// Servlet容器初始化的配置类
// 作用: 启动服务器的时候把SpringMVC加载上
public class SevletContainersInitConfig extends AbstractDispatcherServletInitializer {
@Override
// 加载 SpringMVC配置 对应的容器对象
protected WebApplicationContext createServletApplicationContext() {
// 初始化容器对象
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMVCConfig.class); // 将SpringMVC配置类注册到容器中
return ctx;
}
@Override
// 所有的请求 都归 SpringMVC 处理
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
// 加载 Spring配置 对应的容器对象
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
AbstractDispatcherServletInitializer 类是SpringMVC提供的快速初始化 Web 3.0容器的抽象类
createServletApplicationContext()方法,创建 Servlet容器时,加载SpringMVC对应的bean并放入
WebApplicationContext对象范围中,而WebApplicationContext的作用范围为 ServletContext范围,即整个Web容器范围
Tomcat服务器一启动,就会把 createServletApplicationContext() 返回的容器加载到 Tomcat的容器中了
这样就可以在 Tomcat中访问到 SpringMVC 的容器了
流程分析
Tomcat服务器启动以后,首先是加载服务器的配置,在Web3.0的规范中,不用web.xml了,而是使用配置类来做。
执行完 SevletContainersInitConfig 这个类以后,首先初始化了Web容器。
之后 createServletApplicationContext() 这个方法返回了一个SpringMVC容器,即 WebAppplicationContext,具体加载到了Web容器中的
ServletContext里。WebApplicationContext里面加载SpringMVC管理的Bean
Spring容器 SpringMVC容器 web容器的关系
webApplicationContext 与servletContext
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)