3. 入门案例工作流程分析
3.1 启动服务器初始化过程
服务器启动,执行ServletContainersInitConfig类,初始化web容器
执行createServletApplicationContext方法,创建了WebApplicationContext对象
加载SpringMvcConfig配置类
执行@ComponentScan加载对应的bean
加载UserController,每个@RequestMapping的名称对应一个具体的方法
执行getServletMappings方法,定义所有的请求都通过SpringMVC
3.2 单次请求过程
发送请求localhost/save
web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理
解析请求路径/save
由/save匹配执行对应的方法save()
执行save()
检测到有@ResponseBody直接将save()方法的返回值作为响应求体返回给请求方
4. Controller加载控制
问题导入
因为功能不同,如何避免Spring错误的加载到SpringMVC的bean?
4.1 Controller加载控制与业务bean加载控制
SpringMVC相关bean(表现层bean)
Spring控制的bean
业务bean(Service)
功能bean(DataSource等)
SpringMVC相关bean加载控制
SpringMVC加载的bean对应的包均在com.itheima.controller包内
Spring相关bean加载控制
方式一:Spring加载的bean设定扫描范围为com.itheima,排除掉controller包内的bean
方式二:Spring加载的bean设定扫描范围为精准范围,例如service包、dao包等
方式三:不区分Spring与SpringMVC的环境,加载到同一个环境中
4.2 Spring相关bean加载控制
方式一代码实现
名称:@ComponentScan
类型:类注解
范例
@Configuration @ComponentScan(value = "com.itheima", excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, classes = Controller.class ) ) public class SpringConfig { }
属性
excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)与具体项(classes)
includeFilters:加载指定的bean,需要指定类别(type)与具体项(classes)
4.3 Bean的加载格式
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { protected WebApplicationContext createServletApplicationContext() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(SpringMvcConfig.class); return ctx; } protected WebApplicationContext createRootApplicationContext() { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(SpringConfig.class); return ctx; } protected String[] getServletMappings() { return new String[]{"/"}; } }
简化格式
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer{ protected Class<?>[] getServletConfigClasses() { return new Class[]{SpringMvcConfig.class} }; protected String[] getServletMappings() { return new String[]{"/"}; } protected Class<?>[] getRootConfigClasses() { return new Class[]{SpringConfig.class}; } }
5. PostMan【工具】
5.1 PostMan介绍
Postman是一款功能强大的网页调试与发送网页HTTP请求的软件。
作用:常用于进行接口测试
特征
简单
实用
美观
大方
5.2 PostMan安装
双击官网下载的“Postman-win64-8.3.1-Setup.exe”即可自动按照,打开之后需要注册,如果底部有如下链接,可以点击跳过注册
5.3 PostMan的使用
5.3.1 创建WorkSpace工作空间
5.3.2 发送请求获取json数据
5.3.3 保存当前请求
注意:第一次请求需要创建一个新的目录,后面就不需要创建新目录,直接保存到已经创建好的目录即可。