SpringMVC的概念和使用以及bean加载控制

文章目录

*

+ 1. SpringMVC概述
+ 2.SpringMVC的使用
+ 3.SpringMVC总结
+ 4.工作流程
+ 5.bean的加载控制

1. SpringMVC概述

  • SpringMVC是一种基于 JAVA 实现 MVC 模型的轻量级 Web 框架
  • 优点:
  • 使用简单,开发便捷(相比于Servlet)
  • 灵活性强

2.SpringMVC的使用

  1. 导入 SpringMVC 坐标与 Servlet 坐标

      javax.servlet
      javax.servlet-api
      4.0.1
      provided

      org.springframework
      spring-webmvc
      5.3.20

  1. 创建 SpringMVC 控制器类(等同于 Servlet 功能)
@Controller
public class UserController {
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("springmvc save......");
        return "{'msg':'save'}";

    }
}
  1. 初始化 SpringMVC 环境,设定 SpringMVC 加载对应的 bean
@Configuration
@ComponentScan("com.my.controller")
public class SpringMvcConfig {
}
  1. 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求
public class SpringMvcContextInitConfig extends AbstractDispatcherServletInitializer {
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext acwac=new AnnotationConfigWebApplicationContext();
        acwac.register(SpringMvcConfig.class);
        return acwac;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

3.SpringMVC总结

  • 一次性工作
  • 创建工程,设置服务器,加载工程
  • 导入坐标
  • 创建 Web 容器启动类,加载 SpringMVC 配置,并设置 SpringMVC请求 SpringMVC 请求拦截路径
  • SpringMVC 核心配置类,设置配置类,扫描 controller 包,加载Controller 控制器 bean
  • 多次工作
  • 定义处理请求的控制器类
  • 定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

4.工作流程

  • 启动服务器初始化过程
  • 服务器启动,执行自定义配置类,初始化 web 容器
  • 执行 createServletApplicationContext 方法,创建了webApplicationContext 对象
  • 加载 SpringMvcConfig 配置类
  • 执行 @ComponentScan 加载对应的 bean
  • 加载自定义 Controller 类,每个 @RequestMapping 的名称对应一个具体的方法
  • 执行 getServletMappings 方法,定义所有的请求都通过 SpringMVC
  • 单次请求过程
  • 发送请求 localhost/路径名
  • web 容器发现所有请求都经过 SpringMVC,将请求交给 SpringMVC处理
  • 解析请求路径/路径名
  • 由 /路径名 匹配执行对应的方法(方法名())
  • 执行方法
  • 检测有 @ResponseBody 直接将 方法 的返回值作为响应体返回给请求方

5.bean的加载控制

  • SpringMVC 相关的 bean(表现层)
  • Spring 控制的 bean
  • 业务bean(Service)
  • 功能bean(DataSource 等)
  • SpringMVC 相关的 bean 加载控制
  • SpringMVC 加载的 bean 对应的包均在 com.my.controller 包内
  • Spring 相关的 bean 加载控制
  • 方式一:Spring 加载的 bean 设定扫描范围为 com.my ,排除controller 包内的 bean
@Configuration
@ComponentScan(value = "com.my",
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ANNOTATION,
                classes = Controller.class
        )
)
public class SpringConfig {
}
+ excludeFilters :排除扫描路径中加载的 bean,需要指定类别( type )与具体项( classes )
+ includeFilters :加载指定的 bean,需要指定类别( type )与具体项( classes )
  • 方式二:Spring 加载的 bean 设定扫描范围为精准范围,com.my.service 等
  • 方式三:不区分 Spring 与 SpringMVC 的环境,加载到同一个环境中

Original: https://blog.csdn.net/m0_59564754/article/details/127812843
Author: 回眸一笑,bug就跳
Title: SpringMVC的概念和使用以及bean加载控制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655554/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球