[리팩토링] properties 파일을.. yaml 로 변경하면서 생긴, gradle 문제 해결

Properties 파일을 Yaml 로 변경하면서 현재 domain 기존 설정 부분이 null 로 넘어오는 문제가 생겼다

  • props 의 경우 키 - 밸류( LinkedHashMap ) 으로 데이터를 호출함.
  • 문제는 해당 key value 구조의 yaml 을 기존과 같이 들고오려면..

  • profile 에서 props 구분을 [spring.profile.active] 로 할 수 있는게 아니라
  • props[키][키][키] ⇒ 이런식으로 호출하도록 해야함;

해결법

  1. yaml 의 평면화 작업
    1. 키 밸류 구조를 기존 properties 의 방식처럼
      1. 키.키.키 ⇒ 이런식으로 평탄화

    재귀를 해야한다. ⇒ 솔직히 이런 작업에서 재귀를 돌리고 싶지 않았다.

  1. 키값으로 직접 호출

해결

import org.yaml.snakeyaml.Yaml

def loadYamlProperties() {
    File file = file("src/main/resources/application.yaml")
    Yaml yaml = new Yaml()
    Map<String, Object> yamlProps = yaml.load(file.newInputStream())
    println("yamlProps: ${yamlProps}")
    return yamlProps
}
openapi3 {
    def props = loadYamlProperties()

    def profile = props['spring']['profiles']['active'] == null ? 'local' : props['spring']['profiles']['active']
    def domain = props['app']['domain'][profile]

    println("domain: ${domain}")

    server = domain
    title = 'ITEM-BROWSER API'
    description = 'ITEM-BROWSER API'
    version = '0.0.1'
    format = 'yaml' // or json
}
  • 각 키들을 직접 정의하는 방식으로 하기로 결정
  • 공수를 오래 들이고 싶지 않았다.

Uploaded by N2T