我可以使用 data.sql 的 spring 配置文件来根据环境加载不同的数据吗?

Dav*_*vid 1 mysql spring-boot

在此输入图像描述

假设我有两组数据,

一套用于生产,另一套用于开发,目前我只是在 data.sql 中手动注释和取消注释

如何分离 data.sql 的开发环境和生产环境?

小智 5

您可以覆盖 Spring Boot 将用于创建模式并在 application*.properties(或 yml)中加载数据的文件的位置和/或名称。所以你可以拥有:

application-dev.properties 具有:

# "Old" Spring boot version
spring.datasource.schema=classpath:schema-dev.sql
spring.datasource.data=classpath:data-dev.sql

# New Spring boot version
spring.sql.init.schema-locations=classpath:schema-dev.sql
spring.sql.init.data-locations=classpath:data-dev.sql
Run Code Online (Sandbox Code Playgroud)

application-prod.properties 具有:

# "Old" Spring boot version
spring.datasource.schema=classpath:schema-prod.sql
spring.datasource.data=classpath:data-prod.sql

# New Spring boot version
spring.sql.init.schema-locations=classpath:schema-prod.sql
spring.sql.init.data-locations=classpath:data-prod.sql
Run Code Online (Sandbox Code Playgroud)

然后您可以像往常一样使用 Spring Profil 来使用一种或另一种配置。

注意事项:

  • “旧”Spring boot 版本可能是最近的。我认为spring.datasource.*今天创建新应用程序时这些属性已被弃用,并且无法找到确切的版本。
  • 另外,如果不需要,则不必使用属性来定义架构,我只是将其放在那里来完成答案。