[스프링] yaml 파일 하나로 스프링 환경변수 관리하기
스프링으로 개발하면서 yaml 파일 관련해서 공부한 내용을 포스팅해봤습니다.
개발 환경은 다음과 같습니다.
- Spring Boot Version : 3.0.1
- Java Version : 17
- Kotlin Version : 1.8.21
https://github.com/laboratory-kkoon9/kotlin-spring
배경
데이터베이스를 docker 올려서 개발하려고 spring에서 yaml로 환경설정 방법을 알아봤습니다.
스프링 부트 2.4 버전부터 application.yml 하나의 파일로 여러 환경변수를 관리할 수 있게 되었습니다.
자세한 내용은 아래 블로그에서 확인해보시면 됩니다.
http://honeymon.io/tech/2021/01/16/spring-boot-config-data-migration.html
[spring-boot] 2.4 부터 변경된 구성파일 처리방식 살펴보기 - I'm honeymon(JiHeon Kim).
스프링 부트 2.4(https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes) 출시노트를 살펴보면 인상적인 2가지가 있다. 애플케이션 구성파일(application.yml 혹은 application.properties)의 작동방식
honeymon.io
docker-compose.yml
version: "3.8"
services:
hibernate_batch_mysql:
image: mysql:5.7
platform: linux/amd64
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: cafe
ports:
- "3306:3306"
이 포스팅에서는 docker-compose에 대한 설명은 생략하겠습니다.
도커를 깔고, 위 yml을 실행시켜주면 다음과 같이 local에 실행됩니다.
application.yml
aes:
key: cafeSpring
spring:
jpa:
database-platform: org.hibernate.dialect.MariaDBDialect
properties:
hibernate:
jdbc:
time_zone: Asia/Seoul
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
---
spring:
config:
activate:
on-profile: dev
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
jdbc:
time_zone: Asia/Seoul
format_sql: true
datasource:
url: jdbc:mysql://localhost:3306/cafe?characterEncoding=UTF-8
username: root
password: root
환경을 구분하는 구분자는 --- 입니다.
맨 위에는 모든 환경에서 사용하는 공통 환경변수라고 생각해주시면 됩니다.
다른 환경(ex prod 환경)을 추가하고 싶다면 위 코드 아래 구분자를 추가하고 그 환경의 변수들을 적어주시면 됩니다.
정리
현업에서는 환경 별로 application.yml를 관리했었는데, 혼자 만들어보는 프로젝트에서는 하나의 파일에서 환경변수를 관리해보았습니다.
잘못된 부분이나 궁금한 점은 코멘트 부탁드립니다.
읽어주셔서 감사합니다.