스프링부트에서 "properties"는 애플리케이션의 설정을 정의하는 데 사용되는 설정 파일 형식이다.
이 파일들은 애플리케이션의 동작을 변경하고 구성하기 위해 사용된다.
프로퍼티 파일은 주로 "application.properties" 또는 "application.yml"과 같은 이름으로 저장되며, 클래스패스 루트 또는 특정 위치에 배치할 수 있다.
"application.properties" 파일은 주로 키-값 형태로 구성되어 있으며, 이 키-값 쌍은 애플리케이션의 여러 가지 설정을 정의한다.
예를 들어, 데이터베이스 연결 설정, 포트 번호, 로깅 수준 등을 프로퍼티로 설정할 수 있다.
so simple!
"application.yml" 파일은 YAML (YAML Ain't Markup Language) 형식으로 작성된 설정 파일이다.
YAML은 사람이 읽고 작성하기 쉬운, 데이터를 표현하기 위한 형식이다.
"application.yml" 파일은 들여쓰기를 사용하여 계층적인 데이터 구조를 표현하며, 여러 프로퍼티를 그룹화하고 중첩된 구조를 가진다.
스프링부트는 이러한 프로퍼티 파일들을 자동으로 읽어와서 애플리케이션의 설정을 초기화한다.
이를 통해 코드 변경 없이도 설정을 조정하거나 애플리케이션의 동작을 변경할 수 있다.
이런 부분은 개발, 테스트, 프로덕션 환경에서 다른 설정을 사용하고자 할 때 특히 유용하다.
"properties" 파일과 "yaml" 파일은 둘 다 스프링부트 애플리케이션의 설정을 정의하는 데 사용된다.
그러나 각각의 파일 형식은 다른 상황에서 더 적합할 수 있다.
아래에서 각각의 파일 형식이 어떤 경우에 좋은지 살펴보자!
Properties로 설정하는 게 좋을 때:
간단한 설정: "properties" 파일은 주로 간단한 키-값 형태의 설정을 다룰 때 사용된다. 설정이 크게 중첩되지 않고, 키-값 쌍으로 간단하게 표현할 수 있는 경우에 적합하다.
프로퍼티 오버라이딩: "properties" 파일은 프로퍼티 오버라이딩을 지원하여, 환경별로 다른 설정을 쉽게 정의하고 관리할 수 있다. 예를 들어, 개발, 테스트, 프로덕션 환경에서 서로 다른 데이터베이스 연결 정보를 설정할 수 있다.
Java Properties 파일과 호환성: "properties" 파일은 Java의 기본 Properties 파일 형식과 호환되어, 이미 사용 중인 설정 파일을 변환 없이 그대로 사용할 수 있다.
YAML로 설정하는 게 좋을 때:
복잡한 설정: "yaml" 파일은 계층적인 구조와 들여쓰기를 통해 복잡한 설정을 표현하기에 더 적합하다. 중첩된 맵이나 리스트, 객체와 같은 구조를 가지는 설정을 정의할 때 유용하다.
가독성: YAML 형식은 사람이 읽고 쓰기 쉬우며, 들여쓰기를 사용하여 데이터 구조를 시각적으로 표현할 수 있다. 따라서 복잡한 설정을 가독성 있게 표현할 때 좋다.
템플릿 기능: YAML 파일은 스프링 부트에서 프로퍼티 값을 템플릿화하여 동적으로 설정할 수 있는 기능을 지원한다. 이를 통해 동일한 구조의 여러 설정을 효율적으로 생성할 수 있다.
환경별 설정: YAML 파일도 프로파일별로 서로 다른 설정을 쉽게 정의할 수 있게 한다. 다양한 환경에서 다른 설정을 유연하게 관리할 때 유용하다.
요약하면, 간단한 설정과 환경별 오버라이딩을 다룰 때는 "properties" 파일이 편리하며, 복잡한 계층 구조와 가독성을 중요시하는 복잡한 설정에는 "yaml" 파일이 더 적합합니다. 개인적인 선호도와 프로젝트의 요구 사항에 따라 적절한 파일 형식을 선택할 수 있습니다.
1) 노가다(손으로.. 일일이.. 다.. 쓴다..)
2) ChatGPT에게 요청해!
1번 방법:
Properties 파일에서 YAML로 변환:
"application.properties" 파일을 "application.yml"로 변경한다(이름을 바꾼다).
키-값 형식으로 작성된 설정을 YAML의 계층 구조로 변환한다.
예를 들어, spring.datasource.url을 YAML에서는 spring: datasource: url:로 표현한다.
들여쓰기를 사용해 중첩된 구조를 표현한다.
YAML 파일에서 Properties로 변환:
"application.yml" 파일을 "application.properties"로 변경한다.
YAML 형식의 계층 구조를 키-값 형식으로 변환한다.
예를 들어, spring: datasource: url:을 spring.datasource.url로 표현한다.
들여쓰기를 없애고 모든 키-값 쌍을 플랫한 형태로 작성한다.
이렇게 노가다 하는 과정에서
설정 구조나 키-값 매핑 100% 정확히 하는 일이나 중첩 구조 표현에 실수하지 않을 자신이 있는가?
없다면 걍 ChatGPT 돌리세요...