[Spring Boot] yml 파일 사용하기(yaml)

Posted by 김성철

SpringBoot - yml 파일 사용하기(yaml)

설명

- YAML(YAML Ain't Markup Language) 로 데이터 직렬화 양식임  
- YAML 파일은 .yml 또는 .yaml 확장자를 가지며, 일반적으로 설정 파일로 사용됨  

특징

가독성: YAML은 사람이 쉽게 읽고 이해할 수 있는 형식입니다.  
	들여쓰기와 가독성을 중요시하여 설계되었습니다.  
  
계층적 구조: YAML은 데이터를 계층적 구조로 표현할 수 있습니다.  
	들여쓰기를 통해 데이터 간의 부모-자식 관계를 나타낼 수 있습니다.  
  
키-값 쌍: YAML은 키-값 쌍으로 데이터를 표현합니다.  
	각 키는 콜론(:)으로 값과 구분되며, 값은 스칼라(문자열, 숫자, 불린) 또는 다른 복합 데이터 유형(리스트, 맵)일 수 있습니다.  
  
리스트: YAML은 순서가 있는 목록 데이터를 표현할 수 있습니다.  
	대시(-)를 사용하여 리스트의 각 항목을 구분합니다.  
  
주석: YAML 파일에서 주석을 추가할 수 있습니다.  
	주석은 ## 문자로 시작하며, 해당 줄의 끝까지만 유효합니다.  

예시 - 설정파일이 하나일때

아래와 같이 작성하여 사용 가능  
application.yml  
=====================================================================  
spring:  
  mvc:  
	pathmatch:  
	  matching-strategy: ant_path_matcher  
  h2:  
	console:  
	  enabled: true  
	  path: /h2-console  
  datasource:  
	url:  jdbc:h2:~/test  
	driverClassName: org.h2.Driver  
	username: sa  
	password:  
  sql :  
	init :  
	  mode : always  
	  encoding: utf-8  
  
server :  
  port : 9090  
  
springdoc:  
  packages-to-scan: com.blog.createblogpost  
  default-consumes-media-type: application/json;charset=UTF-8  
  default-produces-media-type: application/json;charset=UTF-8  
  swagger-ui:  
	path: swagger-ui.html         ## Swagger UI ?? , localhost:9090/swagger-ui/index.html default : swagger-ui/index.html  
	tags-sorter: alpha            ## alpha: ??? ? ?? ??, method: HTTP Method ? ??  
	operations-sorter: alpha      ## alpha: ??? ? ?? ??, method: HTTP Method ? ??  
  api-docs:  
	path: /api-docs/json  
	groups:  
	  enabled: true  
	cache:  
	  disabled: true  
  
=====================================================================  

환경별로 yml 파일을 분리하였을 때

분리되어 있을때는 application.yml 파일에서 활성화할 yml 파일을 지정할 수 있음  
지정하는 방식은 파일명이 아닌 속성으로 지정함  
  
application.yml 파일에서는 활성화 할 프로파일을 지정  
application-local.yml 파일에서는 on-profile 에 해당 프로파일의 이름을 설정  
  
application.yml 파일  
=====================================================================  
spring:  
  profiles:  
	default: local	## 해당 설정이 들어있는 프로파일을 활성  
  
=====================================================================  
  
application-local.yml 파일  
=====================================================================  
spring:  
  config:  
	activate:  
	  on-profile: local	## application.yml 에 기재되어 있는 설정파일 실행  
  mvc:  
	pathmatch:  
	  matching-strategy: ant_path_matcher  
  h2:  
	console:  
	  enabled: true  
	  path: /h2-console  
  datasource:  
	url:  jdbc:h2:~/test  
	driverClassName: org.h2.Driver  
	username: sa  
	password:  
  sql :  
	init :  
	  mode : always  
	  encoding: utf-8  
  
server :  
  port : 9090  
  
springdoc:  
  packages-to-scan: com.blog.createblogpost  
  default-consumes-media-type: application/json;charset=UTF-8  
  default-produces-media-type: application/json;charset=UTF-8  
  swagger-ui:  
	path: swagger-ui.html         ## Swagger UI ?? , localhost:9090/swagger-ui/index.html default : swagger-ui/index.html  
	tags-sorter: alpha            ## alpha: ??? ? ?? ??, method: HTTP Method ? ??  
	operations-sorter: alpha      ## alpha: ??? ? ?? ??, method: HTTP Method ? ??  
  api-docs:  
	path: /api-docs/json  
	groups:  
	  enabled: true  
	cache:  
	  disabled: true  
  
=====================================================================  

프로그램 실행 시 프로파일 지정 방법

jar 파일 실행 명령어 뒤에 아래의 명령어를 붙여주면됨  
--spring.profiles.active=실행하려는프로파일명  
=====================================================================  
java -jar chat-gpt.jar --spring.profiles.active=local  
=====================================================================