오늘 공부한 내용

  • 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번째주 수요일

 

Cron 표현식 작성시 예시 모습

 

 

오늘의 느낀점

확실히 이전보다는 API 작성과 JWT에 대한 코드 구조가 이해가 된다.

전 강의 시청때는 코드를 따라 치면서도 이게 뭔지 왜 나오는지 전혀 모르는 상태로 쳤었든데 지금은 그래도 작성중 이 매개변수가 와야 하는구나 정도로 구분이 점점 되고 있다.

그래도 희망이 조금 보이는 구나 ㅎㅎ

 

 

+ Recent posts