본문 바로가기
BACK-END/JAVA

Spring Boot : application.properties 대신 application.yml 사용하기

by 개남 2022. 12. 19.

application.properties는 Spring Boot사용시 여러 설정값을 정의할 수 있는 파일입니다. 일반적으로 서버포트,DB 연결정보,로그설정등을 작성해서 사용합니다. 저도 기존에는 application.properties를 사용했었는데 이번에 application.yml을 사용해보았습니다. 둘은 작성 형식만 다를뿐 같은 기능을 한다고 생각하면 됩니다. 

application.properties

#JSP (ViewResolver)     
spring.mvc.view.prefix= /WEB-INF/views/
spring.mvc.view.suffix: .jsp

#DB
spring.datasource.url: jdbc:postgresql://localhost:5432/postgres
spring.datasource.hikari.maximum-pool-size: 1
spring.datasource.hikari.username: postgres
spring.datasource.hikari.password: 1234

application.yml

#JSP (ViewResolver)     
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  datasource:
    url: jdbc:postgresql://localhost:5432/postgres
    hikari:
      maximum-pool-size: 1
      username: postgres
      password: 1234

yml를 사용하면 properties를 사용할때보다 중복코드의 사용이 줄어들고 계층적으로 작성되어 가시성이 더 좋은 것을 알 수 있습니다. 많이 사용하는 예로 local,dev로 환경을 나눠서 사용할때의 코드를 작성해보겠습니다.

spring:
  profiles:
    active: dev
    group:
      local:
      - local-set
      - common
      dev:
      - dev-set
      - common
---

#common     
#JSP (ViewResolver)     
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

  config:
    activate:
      on-profile: common

---
server:
  port: 8080 
  
spring:
  config:
    activate:
      on-profile: local-set
  datasource:
    url: jdbc:postgresql://localhost:5432/postgres
    hikari:
      maximum-pool-size: 1
      username: postgres
      password: 1234

---
server:
  port: 9090 
spring:
  config:
    activate:
      on-profile: dev-set
  datasource:
    url: jdbc:postgresql://127.0.0.1:5432/postgres
    hikari:
      maximum-pool-size: 1
      username: postgres
      password: 1234

파일 경로는 /src/main/resources아래에 application.yml파일을 저장하시면 됩니다. 각각 환경별로 yml을 따로 만들어서 사용해도 되지만 이렇게 하나의 파일로도 관리가 가능합니다.

기본적으로 : 뒤에는 한칸 띄워서 입력해야하며 --- 로 영역을 구분할 수 있습니다. profiles 그룹이 local,dev로 나눠져있는데 common은 공통으로 적용되고 local은 local-set, dev는 dev-set의 내용을 사용한다는 것입니다. 그리고 active 란에 dev나 local중 입력된 것에 해당하는 내용이 적용됩니다. Boot Dashboard에서 서버를 기동시켜서 확인해보면 active: dev로 설정했으니 8080포트가 아닌  http://localhost:9090로 접속되는것을 확인 할 수 있습니다.

댓글