如何使用spring boot将多个数据库使用相同的jpa存储库

时间:2018-03-07 10:32:01

标签: java spring spring-boot spring-data-jpa

我有两个数据库环境,一个用于开发,另一个用于测试。

两个数据库都具有相同的表结构。我想显示特定环境的数据。环境名称将在运行时传递。

如何在diff环境下使用spring boot相同的jpa存储库?

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Spring启动配置文件:Spring Profiles提供了一种隔离应用程序配置部分并使其仅在某些环境中可用的方法。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html

http://www.baeldung.com/spring-profiles

答案 1 :(得分:0)

您需要将数据库级属性外部化为将从固定文件系统路径读取的某个属性文件。此属性文件不应该是war / jar创建的一部分。您可以在启动应用程序时更改属性文件的值。这样,如果DB环境属性发生任何变化,您不需要每次都进行构建。任何时候都可以轻松连接到任何新环境。

答案 2 :(得分:0)

您可以使用SPRING_PROFILES_ACTIVE env. variable在运行时控制您的应用配置文件。

请勿忘记向您的应用添加与您的Spring个人资料相关的不同道具文件,例如:

/model
/repositories
/resources
  - application.properties // common properties for both 'dev' and 'prod' profiles
  - application-dev.properties // 'dev' profile properties, for example - of your H2 database
  - application-prod.properties // 'prod' profile properties, for example - of your prod PostgreSQL database

请注意,您也可以像这样运行您的应用:

java -jar -Dspring.profiles.active=dev target/my-app.jar
java -jar target/my-app.jar --spring.profiles.active=dev

在IDE中设置您的活动配置文件(适用于example),以便在IDE中使用此配置文件运行应用程序。

设置您的默认' application.properties中的个人资料:

spring.profiles.active=dev