Spring

[Spring] .properties와 .yml의 작성법에 대해 알아보자.

Empty Brain 2022. 12. 15. 23:03

나다.

 

 

이 글이 뭐하는 글이냐면

스프링 부트를 사용하면 기본적으로 설정되는 파일인 application.properties를 본 적이 있지 않은가.

못 봤을 리는 없을 것이다. (못 봤으면 라섹수술 권장)

 

나는 처음 이 파일을 접했을 때

어플리케이션의 전반적 설정을 관장하는 파일로 이해하고 받아들였다.

(허접 입장에서 봤을 때 사실 이게 반쯤 맞는 말이기도 함.)

 

properties와 yml파일에서 지원하는 기능과 우선순위가 존X게 많지만 이번 글은그걸 알아보는게 아닌 그냥 작성법과 그 차이에 대해 알아보는 글이니 그건 설명하지 않겠다.

 

이 번 글에서는 application.properties와 application.yml의 작성법과 차이점에 대해알아보자.

 

이 블로그는 허접이 작성하는 블로그이기 때문에 허접의 시선으로 기술된다는 점을 미리 알려둔다.

 

본론부터 말하자면.properties와 .yml의 구분은 "가로" , "세로"로 작성해나간다는 것이 차이점이자 작성법이다.

 

박yml로이
박properties로이

 

앞으로 당신은 .yml파일과 .properties 파일을 볼 때마다 박"세로"이와 박"가로"이가 보이는 저주에 걸릴 것이다.

 

application.properties 작성

 

먼저 application.properties에서 간단하게 db를 연결하도록 작성해보자.

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url= 대충 URL임.
spring.datasource.username= 아이디임.
spring.datasource.password= 비번임.

어떤가.

 

spring.datasource의 하위속성(url, username, password 등) 들이 모두 가로로 전개되고 모두 독립적으로 작성된다.

(어떤거 있는지는 구글에 검색해보셈.)

 

 

application.yml 파일 작성

 

다음은 application.yml 파일에서 db를 연결해보자.

 

spring:
  datasource:
    url: url임
    username: id임
    password: 비번임
    driver-class-name: org.h2.Driver

어떤가.

위에서부터 세로로 뻗어 내려오는 듯하며 최상위 속성부터 하위속성으로 한 칸씩 내려가며 작성된다.

 

굉장히 악랄하게 생겼다.

 

사실 이 글을 쓰는 이유도 yml파일로 뭐 하려다 열 뻗쳐서 뛰어와서 쓰는거다.

 

yml파일이 장점이 없는 것은 아니다.

일단 가독성이 15g고 불필요한 소스의 중복성이 사라진다.

 

application.properties의 내용을 잠깐 돌아보면

"spring.datasource" 라는 중복 구문이 무려 4번이나 들어갔다.

 

하지만 yml 파일에서는 한번으로 끝내니 상당히 깔끔하게 읽을 수 있다.

또한, 계층구조로 이해하기 쉽다.

 

하지만 어떤 개같은 점이 있는가

 

이 천사같은 얼굴 뒤에는 악마같은 본성이 숨어있다.

 

일단 띄어쓰기를 안하면 인식을 못하는 개병X같은 점이 있다.

(사실 이게 전부임.)

 

JPA를 사용해봤다면 설정법에 대해 알고 있을 것이다.

 

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver

jpa:
 hibernate:
    ddl-auto: create
  properties:
    hibernate:
      show_sql: true
      format_sql: true

나는 무지성이다.

그래서 뭔가를 적을 때 줄 맞춤에 그렇게 크게 신경쓰지 않고 적는 경우가 많다.

위의 코드블럭에서 어떤 점이 문제인지 짚은 사람은 나보다 잘하는 사람이니 이 블로그를

읽지 않아도 된다. (더 좋은데 많음 ㅋㅋ)

 

그래서 위에서 무엇이 문제냐.

 

spring:과 jpa과 동일선상에 서있다.

 

.yml파일에서 앞쪽을 띄어쓰는 것은 설국열차에서 칸을 나누는 그것과 비슷하다.

spring.jpa.hibernate.ddl-auto=create

.properties파일에서 ddl-auto에 대한 작성법이다.

 

여기서 우리는 알 수 있다.

spring은 머리 칸, jpa는 2번 칸, ddl-auto는 송강호랑 같이 꼬리칸

 

영화처럼 감히 2번 칸 평민새X가 머리 칸 귀족과 맞먹을려드니 하자가 생긴 것이라 이해하면 편하겠다.

 

그럼 이 병X같은 오류를 해결하기 위해서 어떻게 해야하는가.

spring: #머리 칸
  datasource: # 2번 칸
    url: jdbc:h2:tcp://localhost/~/jpashop #3번 칸
    username: sa #3번 칸
    password: #3번 칸
    driver-class-name: org.h2.Driver #3번 칸

 jpa: #2번 칸
   hibernate: #3번 칸
     ddl-auto: create 
   properties: 
     hibernate: 
       show_sql: true
       format_sql: true

jpa:와 함께 딸린 식구들을 그냥 한칸 씩 밀어내면 된다.

설국열차처럼 짜봉으로 존X 팬 다음 한 칸 씩 뒤로 구겨넣으란 말이다.

 

즉, yml파일을 작성할 때는 각자의 신분을 망각하지 않고 띄어쓰기를 준수해야 한다는 뜻이다.

 

그래서 난 properties 파일을 더 선호하는 편이다.

 

작성법은 이게 전부다.

 

혹시나 나 처럼 yml파일이 익숙하지 않아 붙혀서썻다가 길을 잃어 혈압이 올라있는 사람이 있을까

싶어 글을 써봤다.

대부분 붙혀써서 터진 경우가 많으니 확인해보도록 하자.

 

글에 틀린 점이 있다면 그건 내가 허접이라 그런 것이니 양해를 구한다.

그럼 컴파일 에러없는 개발하시길. :)