【发布时间】:2019-07-02 14:30:45
【问题描述】:
在我的 Spring Boot 应用程序中,我正在使用 CommandLineRunner 创建一个新模式,然后它们会导入一些测试数据。
@Profile("create-schema")
@Component
public class CreateSchema {
// creating schema inside. This works because I can see from the database
}
@Profile("import-data")
@Component
public class DataImporter {
}
这是application.properties中的序列
spring.profiles.active=${SPRING_PROFILE}, create-schema, import-data
并在 application.properties 中使用它
spring.jpa.properties.hibernate.default_schema=simba
架构创建在应用程序启动后开始;创建模式后,导入数据开始。
当导入数据运行时,我收到一个错误
关系
schema_name.table_name不存在
但是,一旦创建了架构并且我再次运行应用程序 - 它就可以工作了。所以,当我必须将我的应用程序部署到每次我必须创建一个模式来运行一些集成测试时——它会在那里失败。
我的运行顺序是否错误?
【问题讨论】:
-
为什么在这里使用配置文件?
-
没有具体原因,我在关注 CommandLineRunner 的一篇文章并在那里看到。这是个问题吗?\
-
@AndrewTobilko 提到的原因之一是 - 在不同的环境中分离命令行运行器。在生产中,您可能不想导入数据。
-
另外,为什么要使用 Spring 而不是为这项工作而构建的工具:flywaydb.org
-
@SofoGial 不能通过 Spring 实现吗?
标签: java spring spring-boot spring-mvc