실무에서 Clock 사용 여부
407
작성한 질문수 1
안녕하세요, Clock 사용한 테스트를 보면서 의문점이 생겼습니다.
실제로 실무에서도 시간 관련된 로직이 있는 클래스에는 Clock을 Bean으로 만들어서 주입해 사용하는 것이 일반적인가요? 그냥 LocalDateTime을 쓰는 경우를 많이 본 것 같아서 의문이 들었습니다.
만약 아니라면, 어떠한 다른 방법이 주로 사용되는지, 토비님은 어떤 방식을 선호하시는지 궁금합니다!
감사합니다~
답변 3
3
시간대(Timezone)이 하나면 충분한 경우라면 LocalDateTime을 쓰면 됩니다. 절대 시간을 저장해두고 여러 시간대로 전환하는 게 필요한 경우엔 OffsetDateTime이나 ZoneDateTime을 사용합니다.
이때 시간대를 옮겨가며 복잡한 시간 계산이 필요한 경우라면 Clock이 유용합니다.
그 외에는 사실 Clock을 잘 사용하지 않습니다. 다만, 테스트를 엄밀하게 하는 목적을 위해서, 혹은 장기적으로 글로벌 서비스가 되어서 여러 시간대를 오고가면서 시간 계산을 해야한다고 하면 Clock 빈을 기반으로 시간을 가져오는 방식을 표준으로 잡는 것이 좋습니다.
0
오오.. 테스트에서 fixed clock을 사용해야 될 것 같아서 적용해야 하나 고민했는데, 실제로는 시간대가 변할 일이 없으면 니즈가 크지 않군요! 답변 감사합니다 토비님!! :D
0
안녕하세요, 인프런 AI 인턴입니다.
damongsanga님께서 질문해 주신 내용에 대해 답변드리겠습니다. 시간 관련 로직에서 Clock을 사용하는 이유는 테스트의 효율성과 코드의 일관성을 높이기 위함입니다. Clock을 Bean으로 주입하여 사용하면 다양한 상황을 효과적으로 테스트할 수 있으며, 테스트 환경에서 시간을 고정할 수 있어 유리합니다.
하지만, 실무에서는 종종 LocalDateTime을 직접 사용하기도 합니다. 이는 주로 코드가 간단하거나 시간 제어가 필요 없는 경우에 해당됩니다. Clock을 사용하여 해체적 주입의 이점을 누리면서도, 로직이 복잡하지 않다면 LocalDateTime을 직접 사용하는 경우도 많습니다.
토비님과 같은 경우에는 코드의 유연성과 테스트의 용이성을 위해 Clock을 사용하는 방식을 종종 추천드리며, 특히 시간 관련 복잡한 로직이 포함되어 있을 때 권장됩니다.
관련된 기존 질문과 답변을 확인해 보시면 도움이 되실 것 같습니다:
- 정적 팩토리 메서드
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수업을 잘 듣고 있습니다.
0
103
2
jackson(3.0.2 버전) ObjectMapper.readValue 에러타입
0
109
2
템플릿과 콜백의 역할 경계를 구분하는 기준
0
100
1
테스트를 작성하지않아도 되는 경우
0
86
2
오브젝트 정의 중 배열에 대해서
0
63
2
스프링 레거시를 이용하는 회사에서 일을 하게 될것같은데
0
110
2
JpaTransactionManager에 대해 궁금합니다.
0
81
2
스프링빈과 Clock 클래스 관련
0
44
2
Seprate Interface 패턴에 대한 궁금증
0
46
2
테스트의 기준을 어떤식으로 설정하는 것이 바람직한 테스트일까요 ?
0
51
2
오브젝트와 인스턴스
0
38
1
WebApiExRateProvider 템플릿 콜백 패턴을 적용하면서 테스트 코드를 만들어보았습니다.
0
64
2
템플릿 콜백 패턴 관련하여 궁금한 것이 있습니다!
0
60
2
상태 변경 API 질문
0
122
2
빈에 대한 질문
0
97
1
안녕하세요.
0
145
2
Payment 엔티티에 exRateProvider 주입
0
101
1
@Transactional private 사용유무
0
157
1
JdbcClient 생성 질문
0
190
2
안녕하세요 PaymentConfig 질문드립니다.
0
111
2
[공유] 윈도우 사용자를 위한 http 명령어 오류 해결 방법
0
246
2
생성자 파라미터성자 파라미터
0
239
2
토비님 ! BigDecimal 관련 링크를 못찾겠어요
2
346
2
인터페이스 사용에 관하여 질문드립니다.
0
309
3





