InstantSource — 현재 순간 접근 인터페이스
InstantSource — 현재 순간 접근 인터페이스
현재 순간에 접근할 수 있는 방법을 제공하는 인터페이스예요.
본문
시그니처
public interface InstantSource
알려진 구현 클래스: Clock.
설명
이 인터페이스의 인스턴스는 현재 순간의 플러그 가능한(pluggable) 표현에 접근하는 데 사용돼요. 예를 들어 InstantSource는 System.currentTimeMillis() 대신 사용할 수 있어요.
이 추상화의 주요 목적은 필요할 때마다 대체 instant 소스를 끼워 넣을 수 있게 하는 것이에요. 애플리케이션은 정적 메서드 대신 객체를 사용해 현재 시간을 얻어요. 이렇게 하면 테스트가 단순해져요. 또한 이 인터페이스는 결과가 실제로 시간선 위의 현재 순간을 나타낸다는 것을 보장하지 않아요. 대신 애플리케이션이 현재 순간이 무엇인지에 대한 제어된 뷰를 제공할 수 있게 해 줘요.
모범 사례로, 애플리케이션은 현재 순간이 필요한 모든 메서드에 InstantSource를 전달해요. 의존성 주입 프레임워크가 이를 구현하는 한 방법이에요. 예를 들어 MyBean 클래스에 InstantSource를 주입하고 source.instant()로 현재 순간을 얻는 식이에요. 이렇게 하면 테스트 중에 fixed나 offset 같은 대체 소스를 사용할 수 있어요.
시스템 팩토리 메서드는 사용 가능한 최상의 시스템 시계를 기반으로 한 소스를 제공해요. 이는 System.currentTimeMillis() 또는 더 높은 해상도의 시계를 사용할 수 있어요.
주요 메서드
instant()— 소스의 현재 순간을 얻어요.millis()— 소스의 현재 밀리초 순간을 얻어요.system()— 사용 가능한 최상의 시스템 시계를 사용해 현재 순간을 반환하는 소스를 얻어요.fixed(Instant fixedInstant)— 항상 같은 순간을 반환하는 소스를 얻어요.offset(InstantSource baseSource, Duration offsetDuration)— 지정한 기간이 더해진 기준 소스의 순간을 반환하는 소스를 얻어요.tick(InstantSource baseSource, Duration tickDuration)— 지정한 기간의 가장 가까운 발생 시점으로 잘린 기준 소스의 순간을 반환하는 소스를 얻어요.withZone(ZoneId zone)— 지정한 시간대를 가진 시계를 반환해요.