最近在看
Spring
(主要是Spring Boot
)配置数据源相关的东西,这篇文章主要记录下所了解到的知识,怕以后有些东西又忘记😅,方便以后查阅,多数据源配置有待补充…
主角
Spring boot
中涉及到数据库这一块的几个重要的类/接口:
- 数据源相关:
- DataSource(DataSourceAutoConfiguration)
- 事务相关:
- DataSourceTransactionManager(DataSourceTransactionManagerAutoConfiguration)
- 操作相关:
- JdbcTemplate(JdbcTemplateAutoConfiguration)
常用的配置
1 | #简单的配置: |
简单的数据库配置上面的其实已经够了,但是我们在实际应用中还会有这样的场景:
需要初始化数据库(建表和添加初始数据)
这里我们不采用ORM
(hibernate
)方式,而是通过在resource
文件夹下添加schema.sql
和data.sql
这两个文件(参见:Initialize a Database),使用非内嵌/内存数据库需要添加配置:spring.datasource.initialization-mode=always
,才会自动初始化
⚠️ 注意:配置了这个将会在每次项目启动的时候初始化数据一遍
自动初始化数据库实现的原理
简单描述:在DataSourceAutoConfiguration
中使用Import注解,将DataSourceInitializationConfiguration
“导入”,DataSourceInitializationConfiguration
又将DataSourceInitializerInvoker
“导入”,而DataSourceInitializerInvoker
中会调用DataSourceInitializer
的createSchema
和createSchema
方法,分别去建表和初始化数据。