- 初始化SpringMVC环境(同Spring一样创建Config配置Java类)
package com.itheima.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;//springmvc配置类,本质上还是一个spring配置类@Configuration@ComponentScan("com.itheima.controller")public class SpringMvcConfig {}
- 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
/*我们服务层的实际操作都是放置于Servlet容器中我们配置的SpringMVC和Spring环境都是用于服务层,所以我们需要把相关Config加载仅Servlet容器中*/package com.itheima.config;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;// web容器配置类// AbstractDispatcherServletInitializer是SpringMVC为我们设置好的类,继承并实现相关方法即可public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {//加载springmvc配置类,产生springmvc容器(本质还是spring容器)protected WebApplicationContext createServletApplicationContext() {//初始化WebApplicationContext对象AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();//加载指定配置类ctx.register(SpringMvcConfig.class);return ctx;}//设置由springmvc控制器处理的请求映射路径protected String[] getServletMappings() {return new String[]{"/"};}//加载spring配置类protected WebApplicationContext createRootApplicationContext() {return null;}}
我们对上述新的内容进行解析:- @Controller
- 名称:@Controller
- 类型:类注解
- 位置:SpringMVC控制类定义上方
- 作用:设定SpringMVC的核心控制器Bean
- 名称:@Controller
- @RequestMapping
- 名称:@RequestMapping
- 类型:方法注解
- 位置:SpringMVC控制器方法定义上方
- 作用:设置当前控制器方法请求访问路径
- 相关属性:value(请求访问路径)
- 名称:@RequestMapping
- @ResponseBody
- 名称:@ResponseBody
- 类型:方法注释
- 位置:SpringMVC控制器方法定义上方
- 作用:设置当前控制器方法响应内容为当前返回值,无需解析
- 名称:@ResponseBody
- AbstractDispatcherServletInitializer类
- AbstractDispatcherServletInitializer是SpringMVC提供的快速初始化Web3.0容器的抽象类
- AbstractDispatcherServletInitializer提供三个接口方法供用户实现
- createServletApplicationContext方法用于创建Servlet容器时,加载SpringMVC对应的Bean并放入
- AnnotationConfigWebApplicationContext的作用范围对应整个Web容器范围,必须使用WebApplicationcontext类型
- 一次性工作
- 创建工程,设置服务器,加载工程
- 导入坐标
- 创建Web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径
- SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器Bean)
- 常态工作
- 定义处理请求的控制类
- 定义处理请求的操作方法,并设置映射路径(@RequestMapper)与返回Json数据(@ResponseBody)

文章插图
启动服务器初始化过程:
- 服务器启动,执行ServletContainersInitConfig类,初始化Web容器
- 执行createServletApplicationContext方法,创建了WebApplicationContext对象
经验总结扩展阅读
- 第一篇 TTD 专题 :C# 那些短命线程都在干什么?
- 局局是什么意思?
- 猪猪是什么意思?
- 小猪猪是什么意思?
- 六杀是什么意思?
- 侧脸杀是什么意思?
- 侧颜杀是什么意思?
- skr狠人是什么意思?
- who care、who cares是什么意思?
- 莫挨老子是什么意思?