오늘 공부한 내용
- Spring 숙련주차 2주차 영상 완강
- 코드카타 2문제
어려웠던 내용
- 회원별 상품 API구현
새로 알게된점
- Scheduler 기능 구현
스케줄러 기능은 주기적으로 정보를 업데이트 하는 기능이다.
주로 다른 곳에서 가져와서 저장한 정보를 일정시간마다 업데이트 하여 최신정보를 유지하기 위한 목적으로 쓰인다.
@EnableScheduling // 스프링 부트에서 스케줄러가 작동하게 합니다.
@EnableJpaAuditing // 시간 자동 변경이 가능하도록 합니다.
@SpringBootApplication
public class MyselectshopApplication {
public static void main(String[] args) {
SpringApplication.run(MyselectshopApplication.class, args);
}
}
Spring boot에는 스케줄러 기능을 지원하며 위 코드 처럼 기본적으로 프로젝트 Application 안에 @EnableScheduling 어노테이션을 사용하면 기능 활성화를 할 수 있다.
package com.sparta.myselectshop.scheduler;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class AcadScheduler {
private static final Logger logger = LoggerFactory.getLogger(AcadScheduler.class);
@Autowired
private AcademyMapper academyMapper;
// 매주 토요일 새벽 3시에 자동으로 시작하는 스케쥴러
@Scheduled(cron = "0 0 3 * * 6")
public void autoUpdate() throws Exception {
logger.info(new Date() + "스케쥴러 실행");
}
이후 클래스 파일에 컴포넌트를 달아주면 스케쥴러를 사용할 수 있다. DB를 연동하고 싶다면 Autowired로 service나 mapper를 연결해주면 된다. 나는 mapper를 이용했다.
또한 스케줄러의 갱신주기를 조절 할 수있는데 @Scheduled의 ()안에 cron이란 표현식을 사용하여 적용가능하다.
이를 크론 표현식이라고 하는데 이는 '필드허용되는 값허용되는 특수문자' 를 뜻하며 밑에 표처럼 문자별 값을 가진다.
Cron 표현식 - 특수문자,
* : 모든 값을 뜻합니다.
? : 특정한 값이 없음을 뜻합니다
- : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현
, : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI
/ : 시작시간 / 단위 (예) 0분부터 매 5분 0/5
L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)
W : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음
# : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일
오늘의 느낀점
확실히 이전보다는 API 작성과 JWT에 대한 코드 구조가 이해가 된다.
전 강의 시청때는 코드를 따라 치면서도 이게 뭔지 왜 나오는지 전혀 모르는 상태로 쳤었든데 지금은 그래도 작성중 이 매개변수가 와야 하는구나 정도로 구분이 점점 되고 있다.
그래도 희망이 조금 보이는 구나 ㅎㅎ
'개발자 일지 > TIL' 카테고리의 다른 글
스파르타 내일배움캠프 58일차 231201 (0) | 2023.12.04 |
---|---|
스파르타 내일배움캠프 57일차 231130 (1) | 2023.11.30 |
스파르타 내일배움캠프 55일차 231128 / 심화주차 시작, 심화 개인과제 발제 (0) | 2023.11.28 |
스파르타 내일배움캠프 54일차 231127 (1) | 2023.11.27 |
스파르타 내일배움캠프 50일차 231123 (1) | 2023.11.25 |