스프링부트 Profile Specific Files

## Profile
- 프로파일은 인물이나 캐릭터에 대한 정보를 개괄적으로 간략히 전달 할 때 사용된다. 마찬가지로 애플리케이션이 구동되는 환경을 간략히 표현하고자 할 때에도 사용되는 단어다. 
- 일반적으로 애플리케이션 실행환경에 따라 다음과 같이 구분한다.
	- local : 개발자가 개발하는 최소 환경. 데스크톱, 노트북 등
	- dev : 내부 개발자들을 위해 애플리케이션이 실행되는 환경
	- stage : 고객이 테스트하기 위한 환경
	- prod : 애플리케이션이 실제로 동작하는 환경
- 이름은 프로젝트에 따라 다를 수 있다.
## Profile Specific Files
- 스프링부트에서는 환경에 따라 application-${profile명}.yml 과 같이 파일을 작성해 두면 해당 프로파일의 config정보만을 참고한다. 
- 예를들어 다음과 같이 설정파일을 만들었다고 했을 때,
```
application.yml
application-local.yml
application-dev.yml
application-prod.yml
```
- `dev` 프로파일로 애플리케이션을 실행하면, `application.yml, application-dev.yml` 의 설정만 읽게된다. 
## 실행할 프로파일의 지정
### default 프로파일 지정하기
```
# application.yml
spring:
	profiles:
		active: local
```
- 참고로 spring.profiles.active 는 profile과 관련없는 곳에서만 사용가능하다. `spring.config.activate.on-profile` 이 사용되지 않은 곳.
### 실행할 때 프로파일 지정하기
```
$ java -jar app.jar --spring.profiles.active=prod $
```
## 파일 하나에 프로파일 설정하기
- `---` (대시 3개)를 구분자로 사용한다.
```
# this document is valid
spring:
  profiles:
    active: "prod"
---
spring:
  config:
    activate:
      on-profile: "local"
# 이하 local에서 사용할 설정들
---
spring:
  config:
    activate:
      on-profile: "prod"
# 이하 prod에서 사용할 설정들
---
spring:
  config:
    activate:
      on-profile: "dev"
# 이하 dev에서 사용할 설정들
```



댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

RabbitMQ 클러스터링(with Docker)

VSCode에서의 VIM 단축키와 키보드 구매 가이드