스프링 스케쥴러란 녀석을 만났다.

TheCarDeveloper·2023년 8월 23일
0

Web

목록 보기
4/6

Spring Scheduler

오늘은 바로 코드부터 공개한다.


@Slf4j
@Component
public class SchedulerController extends CommonController {

    @Autowired
    SchedulerService schedulerService;

    @Autowired
    RegistService registService;

    @Autowired
    AttendanceService attendanceService;

    @Scheduled(cron = "0 5 0 * * *")
    //@Scheduled(cron = "0/5 * * * * *")
    public void sampleSchedule() throws ParseException {
        System.err.println("<==================================스케줄 테스트=====================================>");
        Map paramMap = new HashMap<>();
        LocalDate date = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String today = date.format(formatter);
        DayOfWeek dayOfweek = date.getDayOfWeek();
        paramMap.put("DATE", today);
        paramMap.put("DAY", dayOfweek.getDisplayName(TextStyle.NARROW, Locale.KOREAN));
        List<Record> userList = schedulerService.getUserList(paramMap);
        List<Record> attendanceList = null;
        Map map = new HashMap();
        for (int i = 0; i < userList.size(); i++) {
            userList.get(i).put("DATE", today);
            userList.get(i).put("DAY", dayOfweek.getDisplayName(TextStyle.NARROW, Locale.KOREAN));
            if(userList.get(i).get("REGIST_SEAT") != null) {
                registService.attendanceInsert(userList.get(i));
            }
            map = getAttendanceMap(schedulerService.getAttendanceList(userList.get(i)));
            map.put("ATTENDANCE_DATE", today);
            attendanceService.attendanceUpdate(map);
        }
    }

위 코드와 같이 scheduler를 사용한다.

Spring Scheduler란 Spring에서 제공하는 기능이다.

이 기능은 개발자가 작성 해놓은 시각 혹은 시간마다 자동으로 함수가 실행되는 기능이다.

Spring Scheduler를 사용하려면

우선 프로젝트 main 함수에 @EnableSechduling 어노테이션을 등록해야한다.

@EnableScheduling
@SpringBootApplication
public class WssdApplication {

    public static void main(String[] args) {
        SpringApplication.run(WssdApplication.class, args);
    }

}
  • @Component 이 어노테이션은 bean을 따로 등록하지 않아도 Bean Configuration 파일에 자동 등록된다.(Spring componet scan 기능)
  • @Scheduled(cron= "0 5 0 * * *") 이 어노테이션은 스케줄이 실행되는 시각 혹은 시간을 설정하는 어노테이션으로

    cron 정규식으로 설정한다. (cron 정규식은 구글에 너무나 많은 정보가 나와있다.)

    본인이 설정한 시각은 매년 매월 매일 00 시 05분에 스케줄이 작동한다.

그리고 본인이 스케줄을 돌리고 싶은 기능을 잘 작성하면된다.

매일 자동으로 실행 되어야하는 기능 혹은 매주 매달 매년 실행 되어야하는 기능들을 사용할 때 아주 유용하게 사용될 거 같다.

0개의 댓글