@RequiredArgsConstructor
@Service
public class PostService {

    private final TimeGenerator timeGenerator; // 시간 값을 다루는 객체

	  ...
    
    @Transactional
    public Long refreshTime(Long postId, Long memberId) {
        Post post = postRepository.getById(postId);

        post.validateOwnerShip(memberId));

				// 기존에는 인수에 LocalDateTime.now()가 들어갔었습니다.
        post.changeRefreshedAt(timeGenerator.getCurrentTime());

        ...
    }
}
@Entity
@Table(name = "posts")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post extends BaseEntity {

    ...

    @Column(name = "refreshed_at", columnDefinition = "TIMESTAMP")
    private LocalDateTime refreshedAt;

    ...

		// 끌어올리기 시간을 변경하는 메서드
    public void changeRefreshedAt(LocalDateTime refreshedAt) {
        Assert.notNull(refreshedAt, "refreshedAt은 null이 될 수 없습니다.");

        checkRefreshedAt(refreshedAt);
        this.refreshedAt = refreshedAt;
    }

		// 비즈니스 조건 확인하는 메서드
    private void checkRefreshedAt(LocalDateTime inputTime) {
        ...
    }

}
@Component
public class TimeGeneratorImpl implements TimeGenerator {

    @Override
    public LocalDateTime getCurrentTime() {
        return LocalDateTime.now();
    }

}