복붙노트

[SPRING] Spring Boot로 어떻게 다른 데이터베이스 설정을 제공 할 수 있습니까?

SPRING

Spring Boot로 어떻게 다른 데이터베이스 설정을 제공 할 수 있습니까?

내가 현재보고있는대로 5 가지 가능한 데이터베이스 프로파일이 있습니다.

현재 나는 응용 프로그램을 실행하기 위해 구성된 postgres를 가지고 있고 h2는 java / resources 대 test / resources에 다른 application.properties를 가지고 테스트하도록 구성되어 있습니다.

이 시나리오에서 데이터베이스 연결 정보를 변경하는 가장 간단한 방법은 무엇입니까?

해결법

  1. ==============================

    1.M. Deinum이 자신의 의견에서 언급했듯이이 작업을 수행하는 가장 간단한 방법은 프로필 관련 구성을 사용하는 것입니다.

    M. Deinum이 자신의 의견에서 언급했듯이이 작업을 수행하는 가장 간단한 방법은 프로필 관련 구성을 사용하는 것입니다.

    Spring Boot는 하나의 공통 설정 파일 (application.properties)을 가지고, 각각 다른 프로파일 (application - $ {profile} .properties)에 특정한 다른 여러개의 파일을 가질 수있게합니다.

    예를 들면 :

    예를 들어 응용 프로그램이 "ci"프로파일로 실행되는 경우 기본 구성 파일과 ci 구성 파일 (ci 프로파일에 대한 데이터 소스 구성 등록 정보 포함)이로드됩니다.

    프로파일을 전환하려면 다음 옵션 중 하나를 사용할 수 있습니다.

    유닛 테스트의 경우 테스트 클래스에서 @ActiveProfiles ( "test") 주석을 사용하여 Spring에 단위 테스트가 테스트 프로파일과 함께 실행되어야 함을 알릴 수 있습니다.

    또한 프로덕션 데이터베이스 자격 증명을 소스 코드와 함께 저장하지 않으려면 프로덕션 환경에서 응용 프로그램을 배포 할 때 외부 구성 파일을 지정할 수 있습니다.

  2. ==============================

    2.위의 시나리오에 대한 간단한 답은 하나의 application.yml 파일을 만들고 필요에 따라 다른 프로파일을 만들 때 (-dev, -ci 및 -prod)에 따라 DB 정보를 제공하는 것입니다.

    위의 시나리오에 대한 간단한 답은 하나의 application.yml 파일을 만들고 필요에 따라 다른 프로파일을 만들 때 (-dev, -ci 및 -prod)에 따라 DB 정보를 제공하는 것입니다.

    샘플보기 :

    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
    
        ---
    

    더 많은 이해와 간단한 예를 보려면이 링크를 참조하십시오.

  3. from https://stackoverflow.com/questions/28007686/how-can-i-provide-different-database-configurations-with-spring-boot by cc-by-sa and MIT license