인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

토비의 스프링 6 - 이해와 원리

Clock을 이용한 시간 테스트

정적 팩토리 메서드

작성

·

451

0

안녕하세요 토비님 😄 강의 맛있게 잘 보고 있습니다.

마이너 한 질문인데, 테스트에 Clock 을 이용한 테스트에서

6.50 초 쯔음
아래 와 같은 fixed <- 의 유형 ? 을 정적 팩토리 메서드라고 하셨는데 객체를 반환하기 위해 static 키워드를 사용해야 정적팩토리 메서드가 아닌지 여쭤봅니다

@Bean
public Clock clock() {
    return Clock.fixed(Instant.now(), ZoneId.systemDefault());
}

답변 4

3

토비님의 프로필 이미지
토비
지식공유자

말씀하신 대로 static 메소드로 만들어졌고 리턴 타입의 오브젝트를 생성하는 기능을 담당하는 메소드를 정적 팩토리 메소드라고 합니다.

Clock.fixed()는 다음과 같이 정의되어있습니다.

    public static Clock fixed(Instant fixedInstant, ZoneId zone) {
        Objects.requireNonNull(fixedInstant, "fixedInstant");
        Objects.requireNonNull(zone, "zone");
        return new FixedClock(fixedInstant, zone);
    }

static 메소드이고, Clock의 서브클래스인 FixedClock의 오브젝트를 생성해서 반환합니다.

예제에 나온 clock()은 그 자체로 정적 메소드는 아니죠. 내부에서 정적 팩토리 메소드를 호출해서 오브젝트를 생성하고 리턴하는 @Bean이 붙은 스프링의 팩토리 메소드일 뿐입니다. 둘 다 팩토리 메소드라고 이야기하는데 조금 다른 방식으로 작성되고, Clock.fixed()와 같은 메소드만 정적(static)이라고 부릅니다.

2

image.png

Clock 클래스의 javadoc 문서인데, 보시면 fixed에 static(정적) 키워드가 붙어있고 머시기 instant를 만들어준다고 나와있습니다

2

정적 = static 키워드가 붙음
팩토리 메소드 = 객체를 만들어 주는 역할!

2

Clock 클래스의 fixed 메소드가 정적인 메소드인데 Clock 객체를 만들어주는 역할을 해서 정적 팩토리 메소드에요

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기