• 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相关的组件
  • 相关阅读:
    Python 工匠 第三章 容器类型
    Golang中的协程(goroutine)
    【工作规划】未来自我学习计划及发展注意事项
    ChineseChess5 2023.10.28
    Salesforce-Visualforce-2.内置组件(components)
    嵌入式操作系统--篮球记分计时系统
    面向对象设计模式——工厂方法(Method Factory))
    【Spring】三周玩转Spring全家桶
    解决mybatis case when 报错的问题
    prometheus监控etcd证书报错问题
  • 原文地址:https://blog.csdn.net/yichengjie_c/article/details/134176381