• SpringMVC的概念和使用以及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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 创建 SpringMVC 控制器类(等同于 Servlet 功能)
    @Controller
    public class UserController {
        @RequestMapping("/save")
        @ResponseBody
        public String save(){
            System.out.println("springmvc save......");
            return "{'msg':'save'}";
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 初始化 SpringMVC 环境,设定 SpringMVC 加载对应的 bean
    @Configuration
    @ComponentScan("com.my.controller")
    public class SpringMvcConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.SpringMVC总结

    • 一次性工作

      • 创建工程,设置服务器,加载工程
      • 导入坐标
      • 创建 Web 容器启动类,加载 SpringMVC 配置,并设置 SpringMVC请求 SpringMVC 请求拦截路径
      • SpringMVC 核心配置类,设置配置类,扫描 controller 包,加载Controller 控制器 bean
    • 多次工作

      • 定义处理请求的控制器类
      • 定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody)

    4.工作流程

    • 启动服务器初始化过程

      1. 服务器启动,执行自定义配置类,初始化 web 容器
      2. 执行 createServletApplicationContext 方法,创建了webApplicationContext 对象
      3. 加载 SpringMvcConfig 配置类
      4. 执行 @ComponentScan 加载对应的 bean
      5. 加载自定义 Controller 类,每个 @RequestMapping 的名称对应一个具体的方法
      6. 执行 getServletMappings 方法,定义所有的请求都通过 SpringMVC
    • 单次请求过程

      1. 发送请求 localhost/路径名
      2. web 容器发现所有请求都经过 SpringMVC,将请求交给 SpringMVC处理
      3. 解析请求路径/路径名
      4. 由 /路径名 匹配执行对应的方法(方法名())
      5. 执行方法
      6. 检测有 @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 {
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • excludeFilters :排除扫描路径中加载的 bean,需要指定类别( type )与具体项( classes )
        • includeFilters :加载指定的 bean,需要指定类别( type )与具体项( classes )
      • 方式二:Spring 加载的 bean 设定扫描范围为精准范围,com.my.service 等

      • 方式三:不区分 Spring 与 SpringMVC 的环境,加载到同一个环境中

  • 相关阅读:
    Python常用信号处理函数之pysptk
    MongoDB系列之Window环境部署配置
    90行代码写一个视频播放器
    管理类联考——英语二——阅读篇——题材:经济
    自动化测试系列 —— UI测试
    Linux getopt函数的使用
    Word软件手动安装Zotero插件
    蓝色光标发布营销行业模型“Blue AI” 人机协同重构产业新格局
    uniapp用vue3.0组合式API开发微信小程序子组件内使用uni-ui扩展组件无法修改样式?
    基于vue和nodejs的项目知识信息分享平台
  • 原文地址:https://blog.csdn.net/m0_59564754/article/details/127812843