SpringBoot
application.yml VS application.properties
쥰쥬
2022. 10. 20. 15:10
@ 개요
SpringBoot의 일반적인 관행은 외부구성을 사용하여 속성을 정의하는 것.
이를 통해 다른 환경에서 동일한 애플리케이션 코드를 사용할 수 있음
@ 속성 구성
Spring Boot는 key-value 형식을 사용하는 application.properties파일에 설정된 구성에 액세스 할 수 있음
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.username=유저이름
spring.datasource.password=비밀번호
spring.datasource.url=jdbc:mariadb://localhost:3306/board
- 각 라인은 단일 구성. 키에 동일한 접두사를 사용하여 계층적 데이터를 표현해야 함
위의 내용에서 모든 키는 spring.datasource에 속함
@@ Properties파일에서 Placeholder 사용
- 값 내에서 ${}구문 과 함께 자리 표시자를 사용하여 다른 키, 시스템 속성 또는 환경 변수의 내용을 참조할 수 있음
app.name=MyApp
app.description=${app.name} is a Spring Boot application
@@ List 구조
- 값이 다른 동일한 종류의 속성이 있는 경우 배열 인덱스로 List 구조를 나타낼 수 있음
application.servers[0].ip=127.0.0.1
application.servers[0].path=/path1
application.servers[1].ip=127.0.0.2
application.servers[1].path=/path2
application.servers[2].ip=127.0.0.3
application.servers[2].path=/path3
@@ 여러 프로필
- Spring Boot 버전 2.4.0부터 다중문서속성파일 생성을 지원 => 하나의 실제 파일을 여러 논리 문서로 분할 할 수 있음
- 문서를 분할 할 위치를 나타 내기 위해 '#--' 표기법을 사용
- 루트 수준에서 공통 속성 집합을 가질 수 있음. 이 경우 logging.file.name속성은 모든 프로필에서 동일
logging.file.name=myapplication.log
bael.property=defaultValue
#---
spring.config.activate.on-profile=board
spring.datasource.password=password
spring.datasource.url=jdbc:mariadb://localhost:3306/board
spring.datasource.username=board
bael.property=devValue
#---
spring.config.activate.on-profile=shop
spring.datasource.password=password
spring.datasource.url=jdbc:mariadb://localhost:3306/shop
spring.datasource.username=shop
bael.property=prodValue
@ YAML 구성
@@ YAML 형식
- YAML은 계층적 구성 데이터를 지정하기위한 편리한 형식
spring:
datasource:
password: password
url: jdbc:mariadb://localhost:3306
username: board
- 반복되는 접두사가 포함되지 않으므로 대체 속성 파일보다 더 읽기가 쉬움
@@ List 구조
application:
servers:
- ip: '127.0.0.1'
path: '/path1'
- ip: '127.0.0.2'
path: '/path2'
- ip: '127.0.0.3'
path: '/path3'
@@ 여러 프로필
- 설계에 따라 다중 문서 파일을 지원하므로 동일한 파일에 여러 프로필을 저장할 수 있음
새 문서의 시작을 나타내기 위해 세 개의 대시를 사용해야 함
logging:
file:
name: myapplication.log
---
spring:
config:
activate:
on-profile: staging
datasource:
password: 'password'
url: jdbc:mariadb://localhost:3306
username: SA
bael:
property: stagingValue