一尘不染

如何在应用程序启动时运行SQL脚本并获取数据?

spring-boot

我正在开发一个Spring Boot应用程序。目前,我的一些配置已经过硬编码(例如Hystrix属性)。

所以我想在我的应用程序启动时间或之后启动这些配置。

使用Spring Boot可以做到吗?我的意思是在启动时运行SQL脚本并获取数据。

应该如何检索属性/配置并将其存储在我的应用程序中?

我正在使用MyBatis和Oracle DB。


阅读 233

收藏
2020-05-30

共1个答案

一尘不染

默认情况下,Spring-Boot加载data.sql和/或data-${platform}.sql

但是,请记住,该脚本将在每次启动时加载,因此我认为(至少对于生产而言)更有意义(仅在数据库中已存在值,而不是在每次启动时都重新插入)。
我个人仅在使用内存数据库时将数据库初始化用于测试/开发目的。 尽管如此,这是Spring-Boot提供的功能。

来源:spring-boot-howto-database-initialization

Spring JDBC具有数据源初始化器功能。Spring
Boot默认情况下启用它,并从标准位置schema.sql和data.sql(在类路径的根目录中)加载SQL。另外,Spring
Boot还将加载schema-$ {platform} .sql和data-$ {platform} .sql文件(如果存在)。

src / main / resources / data-oracle.sql:

insert into...
insert into...
  • 您可以使用定义平台spring.datasource.platform=oracle
  • 您可以更改要加载的sql脚本的名称:spring.datasource.data=myscript.sql
  • 与一起data.sql,还会启动Spring-boot schema.sql(在之前data.sql)。
  • 您还可以在data.sql中使用“更新或插入”逻辑:oracle sql:如果存在则进行更新,否则插入
2020-05-30