application.properties vs application.yml
Spring Boot에서 설정 파일로 사용되는 application.properties와 application.yml의 차이점과 활용법을 알아보자.
기본 문법 비교
application.properties
# 서버 설정
server.port=8080
server.servlet.context-path=/api
# 데이터베이스 설정
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=user
spring.datasource.password=password
# JPA 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
application.yml
server:
port: 8080
servlet:
context-path: /api
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: user
password: password
jpa:
hibernate:
ddl-auto: update
show-sql: true
계층 구조 표현
List/Array 표현 방식
properties 파일:
my.array[0]=value1
my.array[1]=value2
my.array[2]=value3
app.servers[0].ip=127.0.0.1
app.servers[0].port=8080
app.servers[1].ip=192.168.1.100
app.servers[1].port=8081
yml 파일:
my:
array:
- value1
- value2
- value3
app:
servers:
- ip: 127.0.0.1
port: 8080
- ip: 192.168.1.100
port: 8081
프로파일 설정
properties 파일 방식
# application-dev.properties
spring.datasource.url=jdbc:mysql://dev-db:3306/mydb
# application-prod.properties
spring.datasource.url=jdbc:mysql://prod-db:3306/mydb
yml 파일 방식
# application.yml
spring:
profiles:
active: dev
---
spring:
config:
activate:
on-profile: dev
datasource:
url: jdbc:mysql://dev-db:3306/mydb
---
spring:
config:
activate:
on-profile: prod
datasource:
url: jdbc:mysql://prod-db:3306/mydb
복잡한 설정 예시
Custom 설정
properties 파일:
app.name=MyApplication
app.description=Sample Application
app.security.auth-token=123456
app.security.token-timeout=3600
app.feature.feature1.enabled=true
app.feature.feature1.value=value1
app.feature.feature2.enabled=false
app.feature.feature2.value=value2
yml 파일:
app:
name: MyApplication
description: Sample Application
security:
auth-token: 123456
token-timeout: 3600
feature:
feature1:
enabled: true
value: value1
feature2:
enabled: false
value: value2
각 방식의 장단점
application.properties
장점:
- 단순하고 익숙한 구조
- IDE에서 자동 완성 지원이 잘됨
- 키-값 쌍이 명확함
단점:
- 계층 구조 표현이 복잡
- 반복되는 prefix가 많음
- 가독성이 yml에 비해 떨어짐
application.yml
장점:
- 계층 구조가 시각적으로 명확
- 중복되는 prefix 제거
- 들여쓰기로 구조 파악이 쉬움
- 프로파일 구분이 한 파일에서 가능
단점:
- 들여쓰기 실수 시 오류 발생
- properties에 비해 약간의 학습 필요
- 일부 IDE에서 자동 완성이 properties만큼 잘 지원되지 않을 수 있음
실무 추천 사항
- yml 사용 권장
- 계층 구조가 명확해 유지보수가 쉬움
- 코드 중복이 적음
- 프로파일 관리가 용이
- 프로파일별 설정
spring:
config:
activate:
on-profile: local
datasource:
url: jdbc:h2:mem:testdb
---
spring:
config:
activate:
on-profile: dev
datasource:
url: jdbc:mysql://dev-db:3306/mydb
3. 민감정보처리
spring:
datasource:
password: ${DB_PASSWORD} # 환경 변수 사용
'개발&프로그래밍' 카테고리의 다른 글
[Docker] Docker 기본 명령어 정리 (2) | 2024.12.05 |
---|---|
[Spring Boot] 로깅 설정 가이드 (0) | 2024.12.04 |
[IntelliJ] 인텔리제이 메모리 늘리기(메모리 설정) (0) | 2024.11.28 |
[Python] 기초 알고리즘 문제 풀이 (0) | 2024.11.27 |
[Python] 모듈과 패키지 (0) | 2024.11.26 |
댓글