Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Spring Boot提供不同的数据库配置?_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何使用Spring Boot提供不同的数据库配置?

Java 如何使用Spring Boot提供不同的数据库配置?,java,spring,spring-boot,Java,Spring,Spring Boot,正如我目前看到的,我有5个可能的数据库配置文件 CI测试->h2 mem 开发人员环境(可以是测试或应用程序运行)->h2 mem、h2文件或postgres 生产->postgres(理想情况下凭证不存储在git/war中) 目前,我已将postgres配置为运行应用程序,并将h2配置为通过在java/resources与test/resourcess中使用不同的application.properties进行测试 对于这些场景,更改数据库连接信息的最简单方法是什么?正如M.Deinum在

正如我目前看到的,我有5个可能的数据库配置文件

  • CI测试->h2 mem
  • 开发人员环境(可以是测试或应用程序运行)->h2 mem、h2文件或postgres
  • 生产->postgres(理想情况下凭证不存储在git/war中)
目前,我已将postgres配置为运行应用程序,并将h2配置为通过在
java/resource
s与
test/resources
s中使用不同的
application.properties
进行测试


对于这些场景,更改数据库连接信息的最简单方法是什么?

正如M.Deinum在他的评论中提到的,最简单的方法是使用

Spring Boot允许您拥有一个公共配置文件(
application.properties
),然后是多个其他文件,每个文件都特定于一个配置文件(
application-${profile}.properties

例如:

  • application.properties
    -通用配置
  • application-dev.properties
    -dev配置文件的配置
  • 应用程序ci.properties
    -ci配置文件的配置
例如,如果应用程序使用“ci”配置文件运行,则将加载默认配置文件以及ci配置文件(其中将包含ci配置文件的数据源配置属性)

要切换配置文件,可以使用以下选项之一:


  • JVM属性:
    -Dspring.profiles.active=ci
  • 命令行开关:
    --spring.profiles.active=dev
对于单元测试,您可以在测试类上使用
@ActiveProfiles(“test”)
注释来告诉Spring单元测试应该使用测试概要文件运行

另外,如果您不想将生产数据库凭据与源代码一起存储,则可以在生产环境中部署应用程序时指定外部配置文件:

  • 使用命令行开关:
    --spring.config.location=/srv/myapp/config.properties
  • 使用JVM属性:
    -Dspring.config.location=/srv/myapp/config.properties

上述场景的简洁解决方案是创建单个application.yml文件,并根据需求创建不同的概要文件,例如-dev、-ci和-prod,并相应地提供数据库信息

示例如下:

spring:
  profiles.active: development

---
spring:
  profiles: development
datasource:
  db-person:
      url: jdbc:oracle:thin:@db_person_dev
      username: username
      password: pwd
      driver-class-name: oracle.jdbc.OracleDriver
      test-on-borrow: true
      validation-query: SELECT 1 FROM dual
  db-contract:
      url: jdbc:oracle:thin:@db_contract_dev
      username: username
      password: pwd
      driver-class-name: oracle.jdbc.OracleDriver
      test-on-borrow: true
      validation-query: SELECT 1 FROM dual

    ---

    spring:
      profiles: test
    datasource:
      db-person:
          url: jdbc:oracle:thin:@db_person_test
          username: username
          password: pwd
          driver-class-name: oracle.jdbc.OracleDriver
          test-on-borrow: true
          validation-query: SELECT 1 FROM dual
      db-contract:
          url: jdbc:oracle:thin:@db_contract_test
          username: username
          password: pwd
          driver-class-name: oracle.jdbc.OracleDriver
          test-on-borrow: true
          validation-query: SELECT 1 FROM dual

    ---

    spring:
      profiles: production
    datasource:
      db-person:
          url: jdbc:oracle:thin:@db_person_prod
          username: username
          password: pwd
          driver-class-name: oracle.jdbc.OracleDriver
          test-on-borrow: true
          validation-query: SELECT 1 FROM dual
      db-contract:
          url: jdbc:oracle:thin:@db_contract_prod
          username: username
          password: pwd
          driver-class-name: oracle.jdbc.OracleDriver
          test-on-borrow: true
          validation-query: SELECT 1 FROM dual

    ---

为了进一步理解和简单示例,您可以参考此

使用哪种构建工具?配置文件。Spring Boot将加载默认的
应用程序.properties
,并在指定时加载特定于配置文件的属性。文档中对此进行了解释。我也在尝试这样做。但是,hsqldb的配置并不是刚刚开始的。您可以发布application-dev.properties的示例吗?如何激活配置文件?我所做的一切似乎都不起作用。
-Dspring.profiles.active=ci
是一个“VM参数”。在eclipse run configuration->Arguments中查找它如果需要保留现有属性并仅外部化特定属性(如DB凭据),可以使用--spring.config.additional location=/srv/myapp/config.propertiesHow为每个概要文件创建不同的data.sql文件?