Etc/Test

Spring 스케줄링 방법

김컴맹 2023. 3. 20. 16:29
반응형

Spring Framework에서 지정된 시간에 동작하는 로직을 만드는 방법은 여러가지가 있습니다.

1. Scheduled Annotation 사용하기
Spring Framework에서는 @Scheduled 어노테이션을 제공하여 지정된 시간에 메소드를 실행할 수 있습니다. 이 어노테이션을 사용하면 cron 표현식이나 고정된 시간 간격으로 메소드를 실행할 수 있습니다.

예를 들어, 아래의 코드는 myMethod() 메소드를 5초마다 실행합니다.

@Component
public class MyScheduledTask {

    @Scheduled(fixedDelay = 5000)
    public void myMethod() {
        // 실행할 코드 작성
    }
}


2. Spring Boot Scheduling 사용하기
Spring Boot에서는 스케줄링을 쉽게 구현할 수 있도록 @EnableScheduling 어노테이션을 제공합니다. 이 어노테이션을 사용하여 스케줄링을 활성화하고 @Scheduled 어노테이션을 사용하여 메소드를 실행할 수 있습니다.

예를 들어, 아래의 코드는 myMethod() 메소드를 매일 오전 6시에 실행합니다.

@Component
@EnableScheduling
public class MyScheduledTask {

    @Scheduled(cron = "0 0 6 * * ?")
    public void myMethod() {
        // 실행할 코드 작성
    }
}



3. Quartz 스케줄러 사용하기
Spring Framework에서는 Quartz 스케줄러를 사용하여 더욱 복잡한 스케줄링을 구현할 수 있습니다. Quartz를 사용하면 스케줄링의 세부 설정을 조정할 수 있으며, 실행할 Job 클래스를 지정할 수 있습니다.

예를 들어, 아래의 코드는 Quartz를 사용하여 MyJob 클래스를 매일 오전 6시에 실행합니다.

@Component
public class MyScheduledTask {

    @Autowired
    private Scheduler scheduler;

    @PostConstruct
    public void scheduleMyJob() throws SchedulerException {
        JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
                .withIdentity("myJob", "group1")
                .build();

        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("myTrigger", "group1")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 6 * * ?"))
                .build();

        scheduler.scheduleJob(jobDetail, trigger);
    }
}

public class MyJob implements Job {

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 실행할 코드 작성
    }
}


위의 방법들 중에서 적절한 방법을 선택하여 로직을 구현할 수 있습니다.

반응형