- SpringMVC配置类
- Controller
- Servlet容器初始化的配置类
- 流程分析
SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。
SpringMVC配置类javax.servlet javax.servlet-api 3.1.0 provided org.springframework spring-webmvc 5.2.10.RELEASE
// 配置类
@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



