SpringBoot系列之JDBC数据访问 (2)

不需要全部看懂源码,只要找到关键的信息即可,如图在这个自动配置类路其实就可以看出Springboot2.2.1支持的数据源种类有如下:

在这里插入图片描述


点一下DataSourceConfiguration类,里面都是各种DataSource的配置,用了很多@Conditional注解,条件符合才会起效

在这里插入图片描述


然后为什么说2.2.1版本默认是Hikari作为Datasource的?可以看一下项目的依赖图,可以看出默认引入了Hikari的jar

在这里插入图片描述


而且条件都符合,所以HikariDataSource就会进行自动配置

在这里插入图片描述


源码里用import引入了一个DataSourceInitializationConfiguration类,看其命名,应该是个初始化配置类

在这里插入图片描述


挑重点,如图,很明显要用了Spring框架很重要的后置处理器,还有一个DataSourceInitializerInvoker类

在这里插入图片描述


DataSourceInitializerInvoker类是做什么的?看其源码应该是一个初始化操作的监听器类,主要操作由DataSourceInitializer执行

在这里插入图片描述


DataSourceInitializer源码,里面有很多操作都是进行schema脚本的操作,只要非isEnabled就可以执行

在这里插入图片描述


只要两个条件符合就执行,DataSourceInitializationMode属性,看起来是通过配置文件获取的

在这里插入图片描述


getScripts,获取对应的脚本

在这里插入图片描述


读取schema脚本,所以可以看出只要将一些sql文件放在resources即可,默认命令为schema.sql,schema‐all.sql;

在这里插入图片描述


再通过资料,确认了这个类确实是执行一些初始化schema脚本的,根据application提示,发现有个属性,将其改为always即可

在这里插入图片描述

改为embedded是不能执行的,虽然源码里代码是这样的

在这里插入图片描述


还有这个关键代码,从配置spring.datasource.schema获取信息,

List<Resource> scripts = getScripts("spring.datasource.schema", this.properties.getSchema(), "schema");

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywsyy.html