programing

환경 기반 Spring 데이터 소스

newsource 2023. 7. 29. 08:30

환경 기반 Spring 데이터 소스

특정 환경 변수가 있을 때 특정 데이터 소스를 사용하도록 Spring Boot 응용 프로그램을 구성하려고 합니다.예를 들어, 다음과 같은 경우MY_PROD_DATASOURCE환경 변수가 있습니다. 프로덕션 데이터 소스를 사용하고 싶습니다. 그렇지 않으면 로컬 데이터 소스(동일한 유형)를 사용하고 싶습니다.

Spring reference에서 단일 데이터 소스를 어떻게 선언할 수 있는지 설명하는 내용을 찾았습니다.application.properties구체적으로 MySQL 데이터 소스는 다음과 같습니다.

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driverClassName=com.mysql.jdbc.Driver

그러나 이 파일에서 데이터 원본 속성을 조건부로 변경할 수 있는 방법을 찾을 수 없습니다.다른 방법이 있습니까?

Spring Boot에서 할 수 있는 일은 다음과 같습니다.

  1. 외부화application.properties시작 매개 변수로 경로를 추가하여 환경별로 파일을 제공합니다.

    java -jar your-app.jar --spring.config.location=/path/to/app.properties
    
  2. 스프링 프로파일을 사용합니다.만들다application-${profile}.properties각 프로파일에 대해 서로 다른 데이터 원본 속성

  3. 스프링 프로파일을 사용합니다.application.properties에 재산을 투자합니다.application.yaml여기서 아래와 같이 규약을 사용하여 모든 환경에 대한 속성을 넣을 수 있습니다.

    spring:
        profiles: development
    server:
        port: 9001
    
    ---
    
    spring:
        profiles: production
    server:
        port: 0
    
  4. 환경 변수 사용 및 설정SPRING_DATASOURCE_URL,SPRING_DATASOURCE_USERNAME,SPRING_DATASOURCE_PASSWORD및 (선택 사항)SPRING_DATASOURCE_DRIVER_CLASS_NAME.

환경외부 구성에 따라 구성을 변경하는 방법에 대한 Spring Boot 참조 섹션에서 자세히 알아보십시오.

언급URL : https://stackoverflow.com/questions/27233536/spring-datasources-based-on-environment