• SpringMVC与JavaConfig笔记整理


    实战笔记
    1. 编写Mvc配置类
      @Configuration
      @EnableWebMvc
      @ComponentScan("com.yicj.study.webmvc.controller")
      public class WebConfig {
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 编写App配置类
      @Configuration
      @ComponentScan("com.yicj.study.webmvc.service")
      public class AppConfig {
      }
      
      • 1
      • 2
      • 3
      • 4
    3. 编写Java注解MVC启动类(WebApplicationInitializer接口实现类)
      public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
         @Override
         protected Class<?>[] getRootConfigClasses() {
            return new Class[]{AppConfig.class};
         }
         @Override
         protected Class<?>[] getServletConfigClasses() {
            return new Class[]{WebConfig.class};
         }
         @Override
         protected String[] getServletMappings() {
            return new String[]{"/"};
         }
         @Override
         protected Filter[] getServletFilters() {
            return new Filter[]{new CharacterEncodingFilter("utf-8", true)};
         }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
    启动流程与配置加载
    1. Servlet提供API: ServletContainerInitializer是容器启动的入口
    2. 其中SpringServletContainerInitializer继承ServletContainerInitializer,启动时会回调WebApplicationInitializer
    3. AbstractAnnotationConfigDispatcherServletInitializer继承WebApplicationInitializer并实现了onStartup方法
    4. 在步骤2的onStartup方法中初始化了SpringRoot根容器与SpringMvc容器
    5. 在构建SpringMvc容器的同时初始化了DispatcherServlet类,并自动回调init方法
    6. FrameworkServlet#initServletBean设置Spring根容器与SpringMvc容器的父子关系,并执行configureAndRefreshWebApplicationContext刷新
    7. 容器启动完成通过ContextRefreshListener事件监听回调FrameworkServlet#onApplicationEvent方法
    8. 在上一步的onApplicationEvent中调用DispatcherServlet#onRefresh(event.getApplicationContext())
    9. DispatcherServlet#initStrategies初始化SpringMvc相关的组件
  • 相关阅读:
    Mybatis详细的使用过程
    Shiro授权
    Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱
    力扣SQL题记录
    百度AI智能审核
    什么是粉红喜马拉雅盐,比普通盐更好吗?
    Win10怎么打开管理员命令提示符窗口
    传输层_TCP&UDP
    【Rust】环境搭建
    C/C++教程 从入门到精通《第十九章》—— 数据库的理解与使用
  • 原文地址:https://blog.csdn.net/yichengjie_c/article/details/134176381