深圳招聘网站前十排名色盲测试图
文章目录
- 1. 提问:如果让您分析Spring MVC的原理,您如何开始分析呢
- 2. 如何破局
- 3. 资料参考
本文主要介绍:如何分析
@Bean方法存在继承
或
@Bean方法中存在调用子类方法
。
1. 提问:如果让您分析Spring MVC的原理,您如何开始分析呢
您可能想到从@EnableWebMVC注解入手,然后找到了DelegatingWebMvcConfiguration类,哪怕找到了这个类还是感觉有点难,是不是感觉有点绕。
假设是在Spring Boot环境中,那更加麻烦了,Boot多包装了一层自动装配又注册了不少相关的mvc的Bean。
如果是第一次看 MVC 原理,感觉有点蒙,正常,作者也蒙,太绕了,如果不知道核心类WebMvcConfigurationSupport 根本绕不出来。
- 为什么感觉DelegatingWebMvcConfiguration有点绕呢
@Bean实例化,@Bean实例化又会触发子类方法的执行,子类方法的执行又要用到@Bean组件,又要触发@Bean组件的实例化,形成一个环了,根本绕不出来😭😶,如何破局。
2. 如何破局
- 首先是要简化
如果搞不定,请您先不要去直接分析Spring Boot,而是单独分析MVC。
- 如何破解复杂的@Bean配置(即带继承的@Bean或@Bean方法中又调用了子类的方法)
之所以如此绕的关键在于在 @Bean方法中存在继承关系
,所以在今后遇到@Bean方法有继承时,一直往上找到“** 顶层类 **
”,查看顶层类的继承体系,就是核心类。
以 MVC 为例:
1、 当发现了存在@Bean方法的继承,找到顶层类即WebMvcConfigurationSupport;
2、分析WebMvcConfigurationSupport 的继承体系,找到DelegatingWebMvcConfiguration
3、现在破局了。
- 现在再看 MVC 原理:https://www.yuque.com/yuchangyuan/kkc8mp/so2871z5pxlrbk34
找到关键类WebMvcConfigurationSupport 后再看 MVC 原理,似乎简单不少。
3. 资料参考
Spring MVC源码分析:https://gitee.com/firefish985/article-list/tree/master/Spring/Spring Web MVC