ZonedDateTime을 다루다 보면 ZoneId를 어떻게 설정을 해야 하나 고민하게 된다.
가장 먼저 생각하게 되는 것이 글로벌에서 접근 가능한 ZoneId를 선언해두고 사용하는 것이다.
아니면 각 클래스에서 필요한 순간에 정의해서 사용할 수도 있다.
이 정도로만 사용하고 있었는데 코드 리뷰를 하면서 ZoneId.systemDefault() 를 사용하는 코드를 확인했고
실행 환경이 달라져 시스템의 기본 시간대가 바뀔 때 이슈가 있을 수도 있을 것 같아
ZoneId.of("Asia/Seoul")과 같이 명확하게 설정하면 어떨찌 의견을 남겼고 각자의 의견이 오가게 되었다.
이 과정을 통해 알게 된 것은 애플리케이션 실행 시 타임존 정보를 줄 수 있기 때문에
ZoneId.systemDefault()을 사용하는 것은 꽤 괜찮은 전략이라는 것이다.
하나의 애플리케이션으로 여러 나라에 배포가 필요할 때
코드 수정 없이 실행 파라미터만 바꾸어서 쉽게 배포할 수 있다.
실행 시 타임존에 대한 설정은 아래와 같이 user.timezone 설정을 통해 할 수 있다.
java -Duser.timezone=Asia/Seoul -jar example-1.0.0.jar
-----
ZonedDateTime를 다룰 때 꽤 괜찮은 방법인 ZoneId.systemDefault()와 java 실행 옵션을 사용하는 방법도 고려해보자.
'제안&정리' 카테고리의 다른 글
Spring Boot 버전별 AWS Secret Manager 적용 방법 (0) | 2024.12.01 |
---|---|
Test Container, Flyway, DB Rider를 활용한 통합 테스트 (0) | 2024.08.11 |
AWS Aurora 3 (MySQL 8 호환) BEFORE/AFTER 구문 등 테이블 리빌드 필요 시 리더에서 테이블 인식불가 버그 (0) | 2024.05.26 |
이제야 해보는 맥북 설정 자동화 (1) | 2024.04.28 |
[Git Strategy] 팀의 속도를 올리는 방법 - Ship Show Ask (0) | 2024.03.03 |