일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 힙
- PS
- FetchType
- 데코레이터
- SQL프로그래밍
- dfs
- 이진탐색
- 스프링 폼
- 다대다
- 일대다
- 비관적락
- fetch
- execute
- 연관관계
- 백트래킹
- 스토어드 프로시저
- querydsl
- BOJ
- 유니크제약조건
- JPQL
- 다대일
- eager
- 연결리스트
- 낙관적락
- 동적sql
- 지연로딩
- shared lock
- 즉시로딩
- exclusive lock
- CHECK OPTION
- Today
- Total
흰 스타렉스에서 내가 내리지
설정 파일 프로필 별 분리 본문
개발용 설정 파일: application-dev.properties
운영용 설정 파일: application-prod.properties
빌드 시점에 개발, 운영 설정 파일을 모두 포함해서 빌드한다.
spring.profiles.active 외부 설정에 값을 넣으면 해당 프로필을 사용한다고 판단한다.
예)
- spring.profiles.active=dev
- dev 프로필이 활성화 되었다.
- application-dev.properties 를 설정 데이터로 사용한다.
- spring.profiles.active=prod
- prod 프로필이 활성화 되었다.
-application-prod.properties 를 설정 데이터로 사용한다.
실행
IDE에서 커맨드 라인 옵션 인수 실행
→ --spring.profiles.active=dev
IDE에서 자바 시스템 속성 실행
→ -Dspring.profiles.active=dev
Jar 실행
→ ./gradlew clean build
→ build/libs 로 이동
→ java -Dspring.profiles.active=dev -jar external-0.0.1-SNAPSHOT.jar
→ java -jar external-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
설정 파일 프로필별 합체
- 스프링은 하나의 application.properties 파일 안에서 논리적으로 영역을 구분하는 방법을 제공한다.
- application.properties 라는 하나의 파일 안에서 논리적으로 영역을 나눌 수 있다.
→ application.properties 구분 방법 #--- 또는 !--- (dash 3)
→ application.yml 구분 방법 --- (dash 3)
spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw
실행
IDE에서 커맨드 라인 옵션 인수 실행
→ --spring.profiles.active=dev
IDE에서 자바 시스템 속성 실행
→ -Dspring.profiles.active=dev
Jar 실행
→ ./gradlew clean build
→ build/libs 로 이동
→ java -Dspring.profiles.active=dev -jar external-0.0.1-SNAPSHOT.jar
→ java -jar external-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
프로필을 적용하지 않고 실행하면 해당하는 프로필이 없으므로 키를 각각 조회하면 값은 null 이 된다.
프로필을 지정하지 않고 실행하면 스프링은 기본으로 default 라는 이름의 프로필을 사용한다.
기본값
내 PC에서 개발하는 것을 보통 로컬( local ) 개발 환경이라 한다. 이때도 항상 프로필을 지정하면서 실행하는 것은 상당히 피곤할 것이다.
설정 데이터에는 기본값을 지정할 수 있는데, 프로필 지정과 무관하게 이 값은 항상 사용된다.
url=local.db.com
username=local_user
password=local_pw
#---
spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw
- application.yml
my:
datasource:
url: local.db.com
username: local_user
password: local_pw
etc:
maxConnection: 2
timeout: 60s
options: LOCAL, CACHE
---
spring:
config:
activate:
on-profile: dev
my:
datasource:
url: dev.db.com
username: dev_user
password: dev_pw
etc:
maxConnection: 10
timeout: 60s
options: DEV, CACHE
---
spring:
config:
activate:
on-profile: prod
my:
datasource:
url: prod.db.com
username: prod_user
password: prod_pw
etc:
maxConnection: 50
timeout: 10s
options: PROD, CACHE
여기서 처음에 나오는 다음 논리 문서는 spring.config.activate.on-profile 와 같은 프로필 정보가 없다.
따라서 프로필과 무관하게 설정 데이터를 읽어서 사용한다.
이렇게 프로필 지정과 무관하게 사용되는 것을 기본값이라 한다.
프로필을 준 부분이 기본값 보다는 우선권을 가진다.
- yml은 --- (dash 3개)를 사용해서 논리 파일을 구분한다.
- spring.config.active.on-profile 을 사용해서 프로필을 적용할 수 있다.
설정 데이터 적용 순서
사실 스프링은 단순하게 문서를 위에서 아래로 순서대로 읽으면서 사용할 값을 설정한다.
단순하게 문서를 위에서 아래로 순서대로 읽으면서 값을 설정한다.
이때 기존 데이터가 있으면 덮어쓴다.
논리 문서에 spring.config.activate.on-profile 옵션이 있으면 해당 프로필을 사용할 때만 논리 문서를 적용한다.
'Spring' 카테고리의 다른 글
외부 설정(환경변수) - @ConfigurationProperties, 그리고 검증 (0) | 2023.11.15 |
---|---|
외부 설정(환경변수) - @Value (0) | 2023.11.15 |
@Conditional (0) | 2023.11.06 |
jar 파일로 스프링부트 프로젝트 배포하기 (0) | 2023.10.11 |
멀티 모듈 생성 4 (0) | 2023.09.10 |