簡體   English   中英

如何使用Spring Boot提供不同的數據庫配置?

[英]How can I provide different database configurations with Spring Boot?

我目前看到它有5個可能的數據庫配置文件

  • CI測試 - > h2 mem
  • 開發人員環境(可以是測試或應用程序運行) - > h2 mem,或h2文件,或postgres
  • 制作 - > postgres(理想情況下憑證不存儲在git / war中)

目前我已經配置了運行應用程序的postgres,而h2配置為通過在java/resource s vs test/resources中使用不同的application.properties進行test/resources

在這些場景中更改數據庫連接信息的最簡單方法是什么?

正如M. Deinum在評論中提到的,最簡單的方法是使用特定於配置文件的配置

Spring Boot允許您擁有一個公共配置文件( application.properties ),然后是多個其他文件,每個文件都特定於一個配置文件( application-${profile}.properties )。

例如:

  • application.properties - 常見配置
  • application-dev.properties - 開發配置文件的配置
  • application-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

    ---

有關進一步理解和簡單示例,請參閱此鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM