Programming/Error

application.yml (yaml) 숫자가 0으로 시작했을 때 오류

Jan92 2021. 9. 25. 02:00
반응형

002003 -> 1027

Spring Boot에서는 외부 설정값을 관리하는 파일로 application.properties 또는 application.yml 을 사용하는데요.

application.yml 파일에서 0으로 시작하는 숫자 값을 사용하며 발생한 오류입니다.

 

 

number:
    test: 002003

 

templateCode 라는 값을 외부 설정값으로 등록하여 프로그램 내부에서 사용하기 위해서 application.yml 파일에 해당 값을 등록하였습니다. 그렇게 프로그램 내부에서 해당 templateCode라는 값을 가지고 외부에 요청을 했는데, 코드가 일치하지 않는다는 결과를 받았습니다.

확인을 위해 log를 찍어보니 yml 파일에 002003으로 등록한 값이 프로그램 내부에서 1027로 출력되고 있는 것을 확인했는데요.

 

 

* 오류의 원인과 해결 방법

 

원인은 YAML 1.1 버전까지는 0으로 시작되는 숫자를 8진법(octal)으로 인식하기 때문입니다. 그래서 0으로 시작하는 002003 이라는 값을 자동으로 10진수(decimal)으로 변환하여 출력한 것인데요.

 

number:
    test: '002003'

간단한 해결 방법은 해당되는 값에 ' 따옴표를 붙이는 것입니다.

 

 

다른 방법은 YAML 1.2 버전 부터는 O0(대문자 알파벳 O + 숫자 0)으로 시작하는 값을 8진법으로 인식하기 때문에 1.2 버전을 사용하는 것인데요.

/**
 * yaml 1.2 버전 사용을 명시하는 경우
 */
 %YAML 1.2
 ---
 number:
     test: 002003
     
 
 /**
  * yaml 1.1 버전을 사용하는 경우
  */
number:
    test: '002003'

yaml 1.2 버전을 사용하기 위해서는 위 예시와 같은 명시를 해줘야 해당 버전이 적용됩니다.

반응형