此网站可能有网页开发外包
web/
2025/10/8 0:19:26/
文章来源:
此网站可能有,网页开发外包,企业查找,长沙旅游攻略三天自由行攻略一、面试题
很多同学的简历都写着熟悉 SpringBoot#xff0c; 而 Starter 的实现原理被当作的考题的的情况越来越多。
来源牛客网关于 starter 的一些面试题 情景一、路虎一面 情景二、蔚来 情景三、同花顺 Starter 频频出现#xff0c;因此在面试准备时#xff0c;这道题…一、面试题
很多同学的简历都写着熟悉 SpringBoot 而 Starter 的实现原理被当作的考题的的情况越来越多。
来源牛客网关于 starter 的一些面试题 情景一、路虎一面 情景二、蔚来 情景三、同花顺 Starter 频频出现因此在面试准备时这道题是必不可少的。
二、题目精简
SpringBoot 自动装配原理介绍SpringBoot Starter 装配原理或者 Starter 的流程如何自定义一个 Starter
三、作答细节
3.1 作答技巧
金字塔答题法从顶层到细节。先粗后细。能让面试官理解你的思路作答有条理由粗到细让面试官不一头雾水同时也是加分项
3.2 作答方式
第一步Starter 的原理有几个要素
自动装配原理importSelector 扩展机制spi 机制条件装配 不是必须但非常具有灵活性 tips 从粗粒度抛出三个要素。 让对方能够明白你是懂的明确做了提炼。
第二步什么是自动装配、什么是 spi、什么是条件装配
什么是自动装配
答自动装配是相对于手动编写配置代码减少这类代码的编写过程 它是 SpringBoot 一套独特的机制通过xxxAutoConfiguration注解等并基于类路径、bean 等存在能够将一系列 bean 注入到 Spring 应用中。实现约定大于配置。
什么是 importSelector 扩展机制核心
扩展机制是 Springframwork 中的核心接口。 SpringBoot#AutoConfigurationImportSelector 实现了这个类。 ConfigurationParser 中会处理延迟的 importSelector。 在这一步实现了将 Starter 配置在 spring.factories 中的全路径名变成 ConfigurationClass。 从而实现 jar 的扩展加载。
什么是 spi
答在 springBoot 中自定义了一套 spi 机制它依赖于 spring.factories 文件通过在这里面能够将 xxxAutoConfiguration 引入从而将此包下面所有相关类都注入到容器中。
什么是条件装配
答基于条件来判断是否加载 bean。提供了丰富的注解注入 ClassOnBean 等。通过条件装配提供了灵活性、扩展性。
知道三个问题后再来说 Starter 的流程。 第三步一个 Starter 被加载的流程是什么
首先springBoot 启动后会加载启动所有的后置处理器其中最关键的后置处理器。 即解析 Configuration 的后置处理器。在这个后置处理器中会调用 ConfigurationParser它是 spring framework core 中的核心类解析 configuration 类把 bean、import、autowired 等注解进行一一解析然后把所有符合的bean都加载到spring容器中。 ConfigurationParser 是一个递归解析的过程。在 ConfigurationParser 中会执行 import 等延迟资源类。其中 AutoConfigurationImportSelector 等 importSelector 会被加载。 SpringBootApplication 引入在这个过程中就会将 spring.facotoreis 中 的 xxxAutoConfiguration 类等进行加载。 spi机制被加载到 cache map 中一种特殊的 map能够通过全路径名反射加载只要能够扫描到这个 xxxAutoConfiguration 类就能利用 ConfigurationParser 解析整个过程将所有相关的 bean 进行加载。 抓住关键特性进行组织回答
1. ConfigurationParserProcessor 后置处理器触发
2. AutoConfigurationImportSelector 等导入。 importSelector 接口是特殊的扩展机制接口。刚好 springBoot 扩展这个能力。
3. spring.facotoreis 筛选加载 xxxAutoConfiguration 类
4. 通过 ConfigurationParser 解析。
围绕这几个核心要点进行回答。然后可以继续追加一些细节。 第四步说一些使用经验
比如场景题目可以结合一个案例比如分布式锁等进行描述。谈一谈你的使用经验 第五步扩展说一下使用经验
注意版本维护注意 maven 管理注意条件装配留有足够的扩展auto-configuration一般会控制相关 bean 的加载
四、技术之外
在面试环节表达能力非常重要对于大多数技术人来讲能够把自己所知道的完美的呈现给面试官并不是一件轻松的事情。 表达能力需要我们刻意练习。输在表达上是一件非常不值得的事情。 五、最后
虽然学了这么多流程也十分清楚但是能够将自己知道的表达出来还需自己总结然后内化成自己的不然还是会在面试的时候出现卡壳。这样就得不偿失了。 希望通过本教程能够深入理解 SpringBoot Starter 的原理能够总结回答好这个问题。最终拿下 offer。 已同步发布到公众号面汤放盐
掘金账号第十一节 SpringBoot Starter 面试题 - 掘金 (juejin.cn)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88777.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!