[팀 프로젝트 (제시요)]어노테이션 @Scheduled

프로젝트 (제시요) 팀 블로그 내용
화낼거양's avatar
Dec 20, 2024
[팀 프로젝트 (제시요)]어노테이션 @Scheduled
 
 
 
💡
스프링부트에서 @Scheduled를 사용하면 일정 시간 간격으로, 또는 특정 시간에 코드가 실행되도록 설정할 수 있습니다.
 
 
 
스케쥴 어노테이션을 쓰려면 application class에 @EnableScheduling 를 추가
@EnableScheduling @SpringBootApplicationpublic class SchedulerApplication {      public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     } }
 
실제 스케쥴링 작업할 클래스 생성
@Servicepublic class SchedulerService {     @Scheduled(시간타입 = 설정할 시간)     public void run() {         System.out.println("Hello CoCo World!);     } }
 
 

 
 

fixedRate

@Servicepublic class SchedulerService {     @Scheduled(fixedRate = 1000) // 1초 간격으로 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
 
  • 작업 시작된 시점부터 일정 간격으로 실행
 
 

fixedDelay

@Servicepublic class SchedulerService {     @Scheduled(fixedDelay = 5000) // 작업 종료 후 5초 대기 후 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
 
  • 작업이 끝난 후 일정 시간 간격으로 실행
 
 

cron

@Servicepublic class SchedulerService {     @Scheduled(cron = "0 0 * * * *") // 매 시간 정각에 실행     public void run() {         System.out.println("Hello CoCo World!);     } }
 
  • 크론 표현식을 사용해서 작업 실행 시점을 지정
 
 
 
추가 크론 표현식 :
  • @Scheduled(cron = "0 0 9 * * ?"): 매일 오전 9시에 실행.
  • @Scheduled(cron = "0 0/10 * * * ?"): 10분 간격으로 실행.
  • @Scheduled(cron = "0 0 12 ? * MON-FRI"): 평일 낮 12시에 실행.
 
 
 

스케줄링된 작업을 비동기적으로 실행하는 방법

 
 
💡
기본적으로 @Scheduled 메서드는 동기적으로 실행됩니다.
여러 작업을 처리하려면 비동기적으로 실행해야 합니다.
 

기본적으로 @Scheduled 메서드는 동기적으로 실행됩니다.

 
  • @Scheduled 어노테이션을 사용하여 메서드를 스케줄링할 수 있습니다. 이는 정해진 시간 간격으로 작업을 실행합니다.
  • 기본적으로 @Scheduled 메서드는 동기적으로 실행되며, 이는 각 작업이 순차적으로 실행되고, 하나의 작업이 완료되기 전까지 다음 작업이 시작되지 않는다는 의미입니다.
 

여러 작업을 처리하려면 비동기적으로 실행해야 합니다.

 
  • 여러 작업을 동시에 처리하려면 비동기적으로 실행하는 것이 좋습니다. 이는 작업이 병렬로 실행될 수 있게 합니다.
 
 

@EnableAsync 활성화

 
@EnableAsync @EnableScheduling public class ScheduledApplication { }
 
  • @EnableAsync 어노테이션은 Spring에서 비동기 처리를 활성화합니다.
  • @EnableScheduling 어노테이션은 스케줄링을 활성화합니다.
  • 이 두 어노테이션을 사용하여 비동기 스케줄링을 활성화할 수 있습니다.
 

@Async 추가

 
@Scheduled(fixedRate = 5000) @Async public void asyncTask() { System.out.println("Async task executed at: " + System.currentTimeMillis()); }
 
  • @Scheduled(fixedRate = 5000) 애노테이션은 이 메서드를 5초마다 실행하도록 스케줄링합니다.
  • @Async 애노테이션은 메서드를 비동기적으로 실행되도록 설정합니다. 이로 인해 여러 작업이 병렬로 실행될 수 있습니다.
 
Share article

moohyun