-
스프링부트 (타임스탬프,오전 1시 마다 가격 업데이트)스프링 2023. 4. 20. 00:17@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class Timestamped {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
private LocalDateTime modifiedAt;
}메인 메서드가 있는 Application에 @EnableScheduling 추가 해주기(중요)
@Slf4j
@Component
@RequiredArgsConstructor
public class Scheduler {
private final NaverApiService naverApiService;
private final ProductService productService;
private final ProductRepository productRepository;
// 초, 분, 시, 일, 월, 주 순서
@Scheduled(cron = "0 0 1 * * *") // 이 부분이 새벽 1시
public void updatePrice() throws InterruptedException {
log.info("가격 업데이트 실행");
List<Product> productList = productRepository.findAll();
for (Product product : productList) {
// 1초에 한 상품 씩 조회합니다 (NAVER 제한)
TimeUnit.SECONDS.sleep(1);
String title = product.getTitle(); // product를 사용해서 title가져오기
List<ItemDto> itemDtoList = naverApiService.searchItems(title); // naverApiService를 통해서 아이템 리스트 가져오기
ItemDto itemDto = itemDtoList.get(0); // 가장 상단에 있는 아이템을 가지고오고
// i 번째 관심 상품 정보를 업데이트합니다.
Long id = product.getId(); // product의 Id도 가지고 와서
productService.updateBySearch(id, itemDto); // 최상단에 있는 아이템과 Id를 통해 업데이트를 실시
}
}
}'스프링' 카테고리의 다른 글
스프링 부트 (회원가입,로그인,토큰발급)api명세서 (0) 2023.04.25 스프링 JWT (코드스니펫) (0) 2023.04.20 스프링 부트 (메모장만들기) * (0) 2023.04.17 IoC 와 DI 용어 이해하기 (0) 2023.04.15 스프링 ㅡMVC (Response, Request) (0) 2023.04.15