스프링부트는 일반적으로 프로젝트의 설정을 properties 혹은 yml 파일에 하게된다.
둘 다 서버정보나 profile 등을 설정할 수 있는 외부 설정파일이지만, 어떤 프로젝트는 yml 어떤 프로젝트는 properties를 사용하길래 차이점이 문득 궁금해져서 검색해봤는데 잘 정리된 글을 찾았다 ! !.
외부설정파일
실제 프로젝트를 진행하다보면 dev, local, test , prod 등 운영환경에 따라 서버 설정이나, 데이터베이스 설정 등을 다르게 설정한다. 스프링 initializr를 통해 프로젝트를 생성하면 application.properties가 생성되지만, 종종 yml파일로 변경해서 사용하는 경우가 있다.
application.properties
properties파일은 key=value 형식으로 사용한다. 문자열만 사용가능하며, 그외 자료형은 사용할수 없다.
properties 파일은 java에서만 활용된다.
하나의 properties파일은 하나의 profile만 가지며, 여러개의 properties 파일을 생성하여 쓸수있다.
# DB Setting
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=username
spring.datasource.password=password
application.yml
yml 파일은 properties 파일과 다르게 계층적 구조를 사용할 수 있다.
예를들어, db세팅을 할때 datasource라는 공통 구조는 상위에 한번만 작성하고, 하위에 driver, url, password 등의 구조를 선언하여 쓸 수 있다.
key,value,map,list 등을 사용할 수 있으며, java 외에도 파이썬이나 루비에서 활용될 수 있다.
하나의 properties 파일에 하나의 profile만 설정할 수 있었던것과 다르게, yml 파일에는 여러개의 profile을 정리해둘 수있다.
# DB Setting
spring:
datasource:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@localhost:1521:orcl
username: username
password: password
위와같이 계층적인 선언은 properties에서 같은 구조내부의 설정들을 여러번 작성해야했던 불편함을 해소할 수 있다.
우선순위
yml 파일과 properties 파일을 함께 사용하면 properties 파일이 우선순위가 높아 yml 파일의 설정이 이를 덮어 쓰게 된다. 따라서 한 프로젝트내에선 둘중 하나의 파일만 쓰기를 권장한다고 한다.
*참고
'Backend' 카테고리의 다른 글
URI와 웹 브라우저 요청 흐름 (1) | 2024.06.02 |
---|---|
Spring Security Config hasRole 사용시 주의점 (0) | 2024.06.02 |
HTTP 기본 (0) | 2024.05.19 |
HTTP 메서드의 종류와 속성 (0) | 2024.05.12 |
Spring 분산락과 Transaction ACID 유지 (0) | 2024.05.05 |