从SpringBoot启动,阅读源码设计( 三 )


从SpringBoot启动,阅读源码设计

文章插图
ApplicationEvent:应用事件基础抽象类,继承自JDK中EventObject类,具体事件会继承该类,内部声明了事件源和发生时间两个核心属性;
ApplicationEventMulticaster:应用事件广播的顶级接口,可以将指定的应用事件广播给适合的监听器;
SimpleApplicationEventMulticaster:应用事件广播接口的简单实现,可以断点该类的multicastEvent方法,查看广播时应用事件和其相应的监听器;
ApplicationListener:应用事件监听器接口,继承自JDK中EventListener接口,Spring中扩展了多种具体的事件监听器,以实现各种不同的场景需求,比如最常见的ConfigFileApplicationListener配置文件监听器;
九、配置加载SpringBoot工程中,配置文件的管理策略非常复杂,有内部程序执行加载配置,也有外部集成的组件配置,当然最核心的就是工程的自定义配置;
【从SpringBoot启动,阅读源码设计】
从SpringBoot启动,阅读源码设计

文章插图
ConfigFileApplicationListener.Loader:配置文件监听器的内部类,实现对工程中的配置源加载,其核心逻辑在Loader.load方法中实现,具体逻辑由相关的实现类完成;
PropertySourceLoader:配置加载的策略接口,在Spring工程中支持多种类型的文件配置,比如yml、yaml、properties、xml,需要通过文件的扩展名选择相应的加载实现类;
YamlPropertySourceLoader:加载.yml或者.yaml类型的文件,SpringBoot工程中常用的配置文件类型,最终转换成Name和Value的属性源集合,即通过PropertySource抽象类来描述;
十、数据库集成Spring框架的强大之处还在于能够和其他组件进行简单快速的集成,比如常用的数据库、缓存、消息队列等各种类型的组件,分析内部的集成逻辑,会发现很多原理上的相似性,尤其在SpringBoot框架中,约定大于配置;
从SpringBoot启动,阅读源码设计

文章插图
DataSourceAutoConfiguration:SpringBoot工程中数据库的自动化配置类,在配置中Hikari是默认选择的连接池,也是号称速度最快的;
DataSourceProperties:数据源配置相关的基础类,在DataSourceConfiguration配置类中,会基于参数去创建数据源对象;
HikariDataSource:Hikari连接池组件中的数据源API,描述数据源的具体信息,例如配置、连接池、状态等,具体的数据库连接逻辑是在该组件内部完成的;
基于SpringBoot集成数据库的原理,可以扩展性的看看:Redis组件的RedisAutoConfiguration配置类;Kafka组件的KafkaAutoConfiguration配置类,Elasticsearch组件的RestClientAutoConfiguration配置类,在设计原理上都有异曲同工之妙;
写在最后
从个人经验来看,想要阅读Spring框架的源码设计,需要基于应用流程先构建一个大的轮廓结构,理解设计中的常用策略和原理,然后再深入单个模块的细节逻辑,这样容易找到阅读节奏;
本文并没有涉及源码中过多的细节逻辑,只是从服务启动作为切入点,整理与开发关联性较为直接的源码模块,描述个人对于Spring源码阅读的基础思路 。
十一、参考源码应用仓库:https://gitee.com/cicadasmile/butte-flyer-parent组件封装:https://gitee.com/cicadasmile/butte-frame-parent

经验总结扩展阅读