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 源码解析

 

posted @   懂得了才能做一些改变  阅读(322)  评论(0编辑  收藏  举报
编辑推荐:
· .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 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示