【Java面试】七、SpringMvc的执行流程、SpringBoot自动装配原理 📅 发布时间:2026/8/26 13:57:07 👁 浏览次数: 文章目录1、SpringMVC的执行流程1.1 视图阶段1.2 前后端分离阶段2、SpringBoot自动配置原理3、框架常用的注解3.1 Spring的注解3.2 SpringMvc的注解3.3 SpringBoot的注解4、面试1、SpringMVC的执行流程1.1 视图阶段旧项目中未前后端分离时用到JSP相关流程为浏览器发出请求http://localhost:8080/user/getById/1请求达到前端控制器DispatcherServlet它相当于一个调度中心会加载处理器映射器、处理器适配器、视图解析器。DispatcherServlet被Tomcat容器初始化所有的请求先经过它。DispatcherServlet向处理器映射器去查询handler即查询这个接口该调哪个Controller的哪个方法。处理器映射器里以key-value形式存了接口路径合类名方法名查询到handler后映射器返回给控制器一个处理器执行链HandlerExecutionChain注意不仅仅是返回一个接口对应的类名 方法名如果接口涉及拦截器拦截器也会被封装到处理器执行链对象中控制器通过适配器HandlerAdaptor调用handler并执行且这里适配器还负责处理了参数绑定和返回值处理。最终返回一个ModelAndView给前端控制器前端控制器请求视图解析器ViewResolver最终得到一个View对象逻辑视图转为真正的视图前端控制器渲染视图返回给浏览器一个有数据的页面流程总结1.2 前后端分离阶段不再返回一个ModelAndView而是返回一个Json给前端将最终结果通过HttpMessageConvert转换器转为Json流程总结2、SpringBoot自动配置原理从SpringBoot启动类的注解可以看到其源码有三个注解SpringBootConfguration与 Configuration 注解作用相同用来声明当前也是一个配置类ComponentScan组件扫描默认扫描当前引导类所在包及其子包EnableAutoConfiqurationEnableAutoConfiquration则是SpringBoot 实现自动化配置的核心注解继续往下跟Import注解导入一个Bean到Spring容器。这里导入一个Selector用来加载类路径下的spring.factories中定义的自动配置类并将这些自动加载为配置Beanspring.factories中已经定义好了很多自动配置类大概有一百多个但这一百多个不是都要加载到IoC容器中。以spring.factories中的RedisAutoConfiguration这个自动配置类为例这里有两个关键注解一个是ConditionalOnClass即有RedisOperation类的字节码时创建这个RedisAutoConfig自动配置类的Bean如此只有你引入了Redis-starter时就会加载RedisAutoConfig这个Bean。此外下面用Bean创建RedisTemplate这个客户端操作类Bean的条件是环境中没有叫redisTemplate的Bean即开发者没有自己定义这个Bean时框架给你创建并维护个redisTemplate的Bean总结注意是读取本项目和被本项目引用的所有jar包这两部分的类路径下的META-INF/spring.factories文件里定义的全类名并把他们加载到当前本项目对应的同一个JVM中3、框架常用的注解3.1 Spring的注解Spring框架亮点IoC、Bean的注解3.2 SpringMvc的注解SpringMvc框架亮点web请求处理的注解3.3 SpringBoot的注解SpringBoot框架亮点快速起步、自动配置的注解再加一个SpringBootApplication4、面试