본문 바로가기

Spring

[Spring] 스프링 스케쥴 작업 적용 방법 (Feat. @EnableScheduling, @Scheduled)

728x90
반응형
SMALL

@EnableScheduling

  • Springboot의 실행파일에 위 어노테이션을 걸어주어야 @Scheduled 사용이 가능 하다.
@EnableScheduling
@SpringBootApplication
public class PracApplication {

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

}

 


@Scheduled

  • 위 어노테이션은 스케줄러를 지정해주기 위한 어노테이션으로 지정한 메소드의 스케줄러를 지정 해 줄 수 있다.
    • 그냥 원할때 실행 되게끔 만들 수 있다는 뜻
  • 위 어노테이션을 사용하기 위해서는 메소드의 리턴타입이 없어야 한다. (void)
  • 메소드의 매개변수를 사용 불가.
  • 스프링 빈(Bean)에 등록이 되어있어야 한다. ( @Component, @Controller, @Service, @Repository )

예제

// 3초마다 한번씩 실행한다 cron 사용
@Scheduled(cron = "0/3 * * * * ?")
public void navernews(){
}

 

  • 이 외에도 Scheduled 는 다양한 방식의 스케쥴러를 사용 할 수 있도록 지원한다.
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
@Reflective
public @interface Scheduled {

    String CRON_DISABLED = ScheduledTaskRegistrar.CRON_DISABLED;

    String cron() default "";	//cron표현식을 사용하여 특정 시작마다 동작 할 수 있게 해줌

    String zone() default "";	// "Asia/Seoul" 같은 지역 시간대를 사용 할 수 있음 Default는 Local의 시간

	// @Scheduled(cron = "* * * * * * ?", zone = "Europe/Paris") 이런식으로 사용 가능

    long fixedDelay() default -1;	// 메소드가 끝난 시점을 기준으로 적용된 시간 마다 실행시킴 (ms을 기준)

    String fixedDelayString() default "";  // fixedDelay()와 같은 기능이지만 문자열을 매개변수로 받음

    long fixedRate() default -1;		//메소드 작업이 시작한 시점을 기준으로 적용한 시간마다 실행 (ms을 기준)

    String fixedRateString() default "";	//fixedRate() 과 같지만 매개변수로 문자열

    long initialDelay() default -1;		// 최초 메소드를 실행시키기까지의 지연시간 (ms 기준)

    String initialDelayString() default "";	// initalDelayString 과 같은 동작, 매개변수 String

	//@Scheduled(fixedRate = 5000, initialDelay = 3000)	// 메소드가 3초후에 5초마다 실행

    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;	//fixed* 혹은 inital* 들을 사용할때 시간을 측정할때 사용되는 것으로 추정

    String scheduler() default "";		// 해당 메소드를 실행 하기 위해 메소드 명을 가지게된다.
}

 

  • 공식 문서는 밑에

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/annotation/Scheduled.html

 

Scheduled (Spring Framework 6.1.3 API)

A cron-like expression, extending the usual UN*X definition to include triggers on the second, minute, hour, day of month, month, and day of week.

docs.spring.io

 

 

728x90
반응형
LIST