Spring Boot에서 다양한 데이터베이스 구성을 제공하려면 어떻게 해야 합니까?
현재 보고 있는 데이터베이스 프로파일은 5개입니다.
- CI 테스트 -> h2 메모리
- 개발자 환경(테스트 또는 앱 실행 가능) -> h2 mem, h2 파일 또는 postgres
- production -> postgres (git/war에 저장되지 않은 자격 증명 포함)
현재 postgres가 어플리케이션 실행용으로 설정되어 있고 h2가 다른 것을 사용하여 테스트하도록 설정되어 있습니다.application.properties
에java/resource
s와test/resources
이러한 시나리오에서 데이터베이스 연결 정보를 변경하는 가장 간단한 방법은 무엇입니까?
M. Deinum이 코멘트에서 언급했듯이 가장 간단한 방법은 프로파일 고유의 구성을 사용하는 것입니다.
Spring Boot에서는 공통 설정 파일을 1개 가질 수 있습니다(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.config.location=/srv/myapp/config.properties
- JVM 속성 사용:
-Dspring.config.location=/srv/myapp/config.properties
위의 시나리오에 대한 간단한 답변은 단일 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
---
자세한 설명과 간단한 예를 보려면 이 링크를 참조하십시오.
언급URL : https://stackoverflow.com/questions/28007686/how-can-i-provide-different-database-configurations-with-spring-boot
'source' 카테고리의 다른 글
리액트 라우터의 hashHistory와 browserHistory의 차이점은 무엇입니까? (0) | 2023.02.28 |
---|---|
왼쪽 조인에서 조인된 행 수를 카운트하는 중 (0) | 2023.02.23 |
Angular.js를 사용하여 페이지 번호 매기기/테이블 레이아웃을 구현하는 방법 (0) | 2023.02.23 |
Yooman과 Bower가 부트스트랩 CSS를 추가하지 않음(각도)JS 제너레이터) (0) | 2023.02.23 |
어레이의 일부만 매핑할 수 있습니까? (Array.map()) (0) | 2023.02.23 |