728x90
Springboot에서 일반적으로 프로젝트의 설정을 application.properties 또는 application.yml 파일을 통해 설정합니다. 기본적으로 Spring Initializer을 통해 springboot 프로젝트를 생성하면 application.properties 가 생성되지만, application.yml 파일을 사용할 수도 있습니다.
properties
properties 파일은 key=value 형태로 이루어져있습니다.
- 예시코드
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:8080/test
spring.datasource.username=
spring.datasource.password=
yml
yml의 경우엔 들여쓰기로 구분되는 계층 구조 및 key: value 형태로 이루어져있습니다.
yml에서는 공통되는 구조는 상위에 한 번만 작성하고 하위에 공통되는 구조가 작성되는 구조입니다.
properties와 비교했을 때 중복되는 코드를 줄일 수 있습니다.
- 예시코드
spring:
datasource:
url: jdbc:log4jdbc:mariadb://localhost:3306/test
hikari:
username:
password:
properties vs yml
properties | yml | |
명세서 존재 | x | o |
어느 언어에서 사용하는지 | 주로 java | python, ruby, java 등 |
계층구조 | 비계층적 | 계층적 |
Spring @PropertySource지원 | o | x |
profile 여러개 사용 | spring boot 2.4부터 구분 가능 | 한 파일에서 구분 가능 |
(Spring에서 YAML에 대해 @PropertySource를 직접 지원하지 않더라도 직접 PropertySourceFactory를 구현하는 방법도 있습니다. 👉 https://www.baeldung.com/spring-yaml-propertysource )
어떤 것을 사용해야할까?
- yml 파일이 다양한 타입을 지원해주고 계층 구조를 지원해준다는 장점이있습니다.
- Spring을 사용한다면 YAML이 제공하는 기능들을 효과적으로 처리해줍니다.
- 여러 애플리케이션에서 읽어야하는 파일이라면 yml이 유리합니다.
- Spring에서만 사용한다면 팀 컨벤셔능ㄹ 따르거나 자신이 읽기 편한것을 사용하면됩니다.
정리
- properties와 yml을 함께 사용하면 properties 파일의 우선순위가 높아 yml 파일에서 설정한 내용이 덮어씌워질 수 있습니다.
- 따라서 되도록이면 한 쪽만 사용하는 것을 권장합니다.
출처
728x90
'스터디 > Spring' 카테고리의 다른 글
[Spring] PUT 과 PATCH 차이 (1) | 2024.07.05 |
---|---|
[Spring] MultiValueMap 의미와 사용법 (0) | 2024.04.21 |
[Spring] Mybatis resultType과 resultMap (0) | 2023.08.25 |
[Spring] @JsonProperty와 @SerializedName (0) | 2023.08.19 |
[Springboot] CircuitBreaker 적용방법(2) - 코드 적용 (0) | 2023.08.18 |
댓글