Spring Boot - 初始数据的条件加载

Posted

技术标签:

【中文标题】Spring Boot - 初始数据的条件加载【英文标题】:Spring Boot - Conditional Loading of Initial Data 【发布时间】:2019-04-21 02:13:16 【问题描述】:

我已经设置了我的 Spring Boot 应用程序,以便在启动时填充我的 H2 嵌入式数据库。我通过在 src/main/resources 文件夹中创建一个 data.sql 文件来完成此操作。

我不明白是什么导致它在启动时运行。

另外,我想让这个有条件 - 例如在我运行单元测试时阻止它执行。这可能吗?

here 有人问过类似的问题,但没有解决。

【问题讨论】:

要根据spring profile加载数据吗? 我不知道。我对这一切都很陌生,所以仍在努力弄清楚。 快速而简短地解释如何做到这一点,我在这里回答:***.com/questions/38040572/… 未来读者.. 你可以在这里找到一个“弹簧轮廓”驱动的答案:***.com/questions/23790743/… 【参考方案1】:

导致加载 data.sql 文件的机制在 Spring 文档第 85.3 章Database Initialization中进行了描述

data.sql 文件名是未通过属性spring.datasource.data 设置脚本时的备用文件名(有关常见弹簧属性的列表,请转到here 并查找有关数据源的属性)

因此,对于您的用例,将您的 dml 脚本重命名为 data-default.sqldata-test.sql 之类的名称,并在您的 application.yml 或属性文件中将它们设置为特定的配置文件。

【讨论】:

此外,我建议使用高级数据库迁移实用程序来设置您的数据库docs.spring.io/spring-boot/docs/current/reference/html/…

以上是关于Spring Boot - 初始数据的条件加载的主要内容,如果未能解决你的问题,请参考以下文章

spring boot的初始化加载

Spring Boot学习总结(25)——Spring Boot 资源初始化加载总结

Spring Boot学习总结(25)——Spring Boot 资源初始化加载总结

条件存储库注入 - Spring Boot

休眠延迟加载不适用于 Spring Boot => 无法延迟初始化角色集合无法初始化代理 - 无会话

内存数据库H2中的Spring Boot在初始化时不会从文件中加载数据