Properties 파일을 Yaml 로 변경하면서 현재 domain 기존 설정 부분이 null 로 넘어오는 문제가 생겼다
- props 의 경우 키 - 밸류( LinkedHashMap ) 으로 데이터를 호출함.
- 문제는 해당 key value 구조의 yaml 을 기존과 같이 들고오려면..
- profile 에서 props 구분을 [spring.profile.active] 로 할 수 있는게 아니라
- props[키][키][키] ⇒ 이런식으로 호출하도록 해야함;
해결법
- yaml 의 평면화 작업
- 키 밸류 구조를 기존 properties 의 방식처럼
- 키.키.키 ⇒ 이런식으로 평탄화
재귀를 해야한다. ⇒ 솔직히 이런 작업에서 재귀를 돌리고 싶지 않았다.
- 키 밸류 구조를 기존 properties 의 방식처럼
- 키값으로 직접 호출
해결
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
'자바 > 리팩토링' 카테고리의 다른 글
[프로젝트] 시큐리티 권한 체크 `@PreAuthorize 또는 @Secured` (0) | 2024.02.02 |
---|---|
[프로젝트] RestDocs 커스텀 유저 모킹 `@MockMember` 적용기 (0) | 2024.02.02 |
[리팩토링] Swagger UI + Spring RestDocs 적용기 (0) | 2024.01.05 |
스웨거와 RestDocs 의 장점을 뽑아내기 (0) | 2024.01.03 |
[프로젝트] 스웨거 example 설정시 String.format 등의 동적 값 삽입이 불가능함 (0) | 2023.12.19 |