본문 바로가기
spring | spring boot

springboot-개발환경 분리하기 application.yaml

by socialcomputer 2022. 3. 24.
반응형

springboot에선 설정 파일이 yaml과 properties 파일 두 종류가 있다.

전엔 properties를 사용했지만 지금은 yaml/yml을 사용 중이다. 

둘 다 장단점이 있는데, 개인적인 사용경험을 봤을 때 계속 사용하는 설정을 기존 프로젝트에서 복사 붙여 넣기 하기엔 properies방식이 편하지만 알아보기 힘들고, yml은 현재 설정한 내용을 한눈에 보기 편해서 설정을 수정할 때 편했다. 

 

본론은 프로젝트 진행 중에 개발환경을 때에 따라 바꾸어 설정해야 할 때가 생겨, 아예 개발환경을 분리하는 방법을 적용하고 싶었다. 실제로 개발용과 운영용을 따로 관리한다고 한다. 실제 db를 날리면 큰일이니까...

분리 방법에는 하나의 파일에서 나누기, 여러 파일로 나누기 두 가지 방식이 있다.

1. 파일 여러개로 나누기

아래 default 설정 파일의 이름은 application.yml / application.yaml 이다. 

# appliation.yml
server:
  port: 8088
spring:
  profiles:
    default: dev

  thymeleaf:
    cache: false 
  mvc:  
    pathmatch: #swagger위한설정 
      matching-strategy: ANT_PATH_MATCHER
이렇게 적용할 설정의 이름을 spring:  profiles:  이름으로 지정해주면 된다. 

 

아래 개발용 환경설정의 이름은 application-dev.yml 이다. 설정명은 dev다.

# application-dev.yml
spring:
  config:
    activate:
      on-profile: dev
  h2:
    console:
      enabled: true
      path: /h2-console 
  datasource:
    hikari:
      driver-class-name: org.h2.Driver
      username: sa
      password:
      jdbc-url: jdbc:h2:mem:testdb
    
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create

위 같은 파일을 여러 개 만들 수 있고, 이름을 각각 아래와 같이 지정하면 된다. 

spring: config: activate: on-profile: dev
2. 한 파일에서 나누기
# appliation.yml
server:
  port: 8088
spring:
  profiles:
    default: dev

  thymeleaf:
    cache: false 
  mvc:  
    pathmatch: #swagger위한설정 
      matching-strategy: ANT_PATH_MATCHER

---

# application-dev.yml
spring:
  config:
    activate:
      on-profile: dev
  h2:
    console:
      enabled: true
      path: /h2-console 
  datasource:
    hikari:
      driver-class-name: org.h2.Driver
      username: sa
      password:
      jdbc-url: jdbc:h2:mem:testdb
    
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: create
--- 로 구분해주면 쉽게 나누어진다. 

 

+) 추가

같은 이름의 설정을 덮어쓰기 할수는 없는 듯하다. 오류가 남
그렇지만 group을 만들고 여러 설정을 조합해서 사용하는 방법이 있다. 

참고 : https://1minute-before6pm.tistory.com/12

 

Spring Boot profile 환경별 설정하기(YAML)

Spring Boot에서 로컬, 개발, 실서비스 같은 여러 환경을 하나의 application.yml 파일에 설정하고 사용하는 방법에 대해서 알아보자. YAML 설정 하나의 application.yml 파일에 여러 환경의 설정 정보를 저장

1minute-before6pm.tistory.com

spring boot config guide: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide#profile-groups

 

GitHub - spring-projects/spring-boot: Spring Boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

 

반응형

댓글