springboot的工作原理之配置文件的加载
springboot的运行原理,springboot运行原理中一个特点就是其有main方法,该类为启动类,且加了@SpringBootApplication的注解,查看该注解源码,其包含@EnableAutoConfiguration,其中一个包含@Import,该注解导入了一个类AutoConfigurationImportSelector,这类的方法比较难以理解,但是它的用法很容易理解,就是为我们动加载了一些配置类。当然,我们也可以使用exclude来说明不配置哪些bean。
springboot为什么会给我们创建那么对象?我们使用springmvc的那些pom.xml可以吗?显然是不可以的,springboot就是包含了很多xxx.starter,所以我们用起来才这么顺手,,没有这些starter,可能就会报错,以下就是用springmvc的pom.xml文件报错了。
1 | Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required |
至于springboot怎么将配置文件的属性读入到bean中,这个我们自己也可以写程序实现,这个就是常规操作了。
spring boot中的xxxApplication类是整个工程的执行入口,其应该位于最顶层的包的目录下,否则无法加载各种类。
有一个非常底层的类SpringFactoriesLoader,顾名思义,就是加载工厂的类,没有办法,spring中工厂太多了,加载工厂类也需要这个类。
参考资料:
Springboot 内部工具类 SpringFactoriesLoader 源码解析
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义