Basic Properties and Profiles
Basic
프로퍼티는 몇가지 방법으로 설정할 수 있다. 아래의 목록은 우선순위가 높은것부터 (명령줄 인자의 우선순위가 가장 높음) 나열한 것이다.
- 명령줄 인자
- OS의 환경변수
- application.property 또는 application.yml 파일 (물론 프로파일 전용 파일도 포함)
환경변수
환경변수 설정 (bash 기준. 다른 쉘은 환경변수 설정 파일이 다를 수 있음.)
- 우선 /etc/profile.d 디렉처리 안에 환경변수 설정용 .sh 파일을 만든다.(시스템 부팅시 실행됨)
sudo vi /etc/profile.d/springboot.sh
- 그 후, 아래와 같이 환경변수를 설정하는 linux 명령어를 입력하고 저장한다.
환경변수 설정 후, os 를 재시작한다.
Tip. 환경변수 세팅 확인
다음과 같이 환경변수를 쉘에 출력해 제대로 세팅되고 그것이 현재 쉘에 적용된 상태인지 확인할 수 있다.
echo $spring_profiles_active
Profile
Property File
yml 파일 기준으로, 하이폰 3개로 파일을 나눈 효과를 낼 수도 있고, 아니면 아래와 같이 파일 이름에 프로파일을 명시할 수도 있다.
- application.yml
#각 개발환경마다 다를 가능성이 크거나, 개인정보를 포함하는 것들, 또는 프로파일은 환경변수로 설정한다.
# export spring_profiles_active=development
# export server_port=38050
# 그렇지 않다면, 프로파일을 이용한다.
spring:
thymeleaf:
mode: LEGACYHTML5
logging:
file: /var/log/BookWarm.log # 이 Spring Boot 애플리케이션이 해당 디렉토리의 해당 파일에 쓰기 권한이 필요하다. (sudo로 실행하자?)
---
spring:
profiles: development
# active: development
thymeleaf:
cache: false
groovy:
template:
cache: false
devtools:
livereload:
enabled: true
server:
port: 32222
logging:
level:
root: DEBUG # 개발시에는 DEBUG 이상의 로그를 남긴다.
---
spring:
profiles: production
# active: production
server:
port: 80
logging:
level:
root: WARN # WARN 이상의 로그를 남기되,
org.springframework.security: DEBUG # spring security 에 관해선, DEBUG 이상의 로그를 남긴다.
- 프로파일 전용 파일 : application-development.yml, application-production.yml
위에서는 application.yml 파일에 여러 프로파일을 구분해서 모두 선언했지만, 파일 이름에 프로파일을 명시하여 파일로 나누는 방법도 있다.
주의사항
.properties 파일을 쓸 때나 환경변수 선언 등 모든 경우에 기본적으로 활성화 된 프로파일을 지정하는 변수는 spring.profiles.active
(환경 변수인 경우 당연히 spring.profiles_active
) 이어야 한다, 그러나, .yml 파일 내부서 프로파일을 직접 지정시
spring:
profiles: production
과 같이 spring > profiles 다음에 바로 프로파일 이름의 값을 지정한다.